복붙노트

[MONGODB] 어떻게 몽구스 모델의 메소드를 정의합니까?

MONGODB

어떻게 몽구스 모델의 메소드를 정의합니까?

내 locationsModel 파일 :

mongoose = require 'mongoose'
threeTaps = require '../modules/threeTaps'

Schema = mongoose.Schema
ObjectId = Schema.ObjectId

LocationSchema =
  latitude: String
  longitude: String
  locationText: String

Location = new Schema LocationSchema

Location.methods.testFunc = (callback) ->
  console.log 'in test'


mongoose.model('Location', Location);

를 호출하려면, 내가 사용하고 있습니다 :

myLocation.testFunc {locationText: locationText}, (err, results) ->

하지만 오류가 발생합니다 :

TypeError: Object function model() {
    Model.apply(this, arguments);
  } has no method 'testFunc'

해결법

  1. ==============================

    1.당신은 당신이 클래스 또는 인스턴스 메소드를 정의하기 위해 찾고 있는지 여부를 지정하지 않았습니다. 다른 사람들이 인스턴스 방법을 적용했기 때문에, 다음은 클래스 / 정적 메서드를 정의하는 것입니다 방법은 다음과 같습니다

    당신은 당신이 클래스 또는 인스턴스 메소드를 정의하기 위해 찾고 있는지 여부를 지정하지 않았습니다. 다른 사람들이 인스턴스 방법을 적용했기 때문에, 다음은 클래스 / 정적 메서드를 정의하는 것입니다 방법은 다음과 같습니다

    animalSchema.statics.findByName = function (name, cb) {
        return this.find({ 
            name: new RegExp(name, 'i') 
        }, cb);
    }
    
  2. ==============================

    2.흠 - 난 당신의 코드를보다이 같은보고해야한다고 생각 :

    흠 - 난 당신의 코드를보다이 같은보고해야한다고 생각 :

    var mongoose = require('mongoose'),
        Schema = mongoose.Schema,
        ObjectId = Schema.ObjectId;
    
    var threeTaps = require '../modules/threeTaps';
    
    
    var LocationSchema = new Schema ({
       latitude: String,
       longitude: String,
       locationText: String
    });
    
    
    LocationSchema.methods.testFunc = function testFunc(params, callback) {
      //implementation code goes here
    }
    
    mongoose.model('Location', LocationSchema);
    module.exports = mongoose.model('Location');
    

    그런 다음 호출 코드는 위의 모듈을 필요로하고이 같은 모델을 인스턴스화 할 수 있습니다 :

     var Location = require('model file');
     var aLocation = new Location();
    

    이 같은 당신의 방법에 액세스 :

      aLocation.testFunc(params, function() { //handle callback here });
    
  3. ==============================

    3.방법에 몽구스의 문서를 참조하십시오

    방법에 몽구스의 문서를 참조하십시오

    var animalSchema = new Schema({ name: String, type: String });
    
    animalSchema.methods.findSimilarTypes = function (cb) {
      return this.model('Animal').find({ type: this.type }, cb);
    }
    
  4. ==============================

    4.

    Location.methods.testFunc = (callback) ->
      console.log 'in test'
    

    해야한다

    LocationSchema.methods.testFunc = (callback) ->
      console.log 'in test'
    

    방법은 스키마의 일부가 될 수 있습니다. 아니 모델.

  5. from https://stackoverflow.com/questions/7419969/how-do-i-define-methods-in-a-mongoose-model by cc-by-sa and MIT license