2017-04-02 8 views
1

私は私が渡したオブジェクトに基づいていくつかのフィールドを移入しますマングースモデルにメソッドを記述しようとしている他の場所でマングースモデルのメソッド:プロパティは保存されませんか? 。

let mySchema = mongoose.Schema({ 
    name: String, 
    age: Number, 
    street: { type: String, default: 'No' } 
}); 

mySchema.methods.populate = function(o) { 
    this.age = o.age + 10; 
}); 

、私はインスタンスを初期化し、この方法で実行されます:

let newThing = new MySchema(); 
newThing.populate({ age: 12 }); 
newThing.save(); 

これは、デフォルトの通りの名前以外のプロパティを持たずに新しいオブジェクトをmongoに正常に保存します。私は何か間違っているのですか?

+0

スキーマをエクスポートしていますか?あなたのコードには他のエラーがないからです。 – Khurram

+0

@Khurram彼がスキーマをエクスポートしない場合、彼はデフォルト値さえ保存できますか? – Tolsee

答えて

1

このコードを参照すると動作します。 model.js

var mongoose = require('mongoose') 
var Schema = mongoose.Schema 

const customSchema = new Schema({ 
    name: String, 
    age: Number, 
    street: { type: String, default: 'No' } 
}) 

// Custom function 
customSchema.methods.populate = function(o) { 
    this.age = o.age 
    return this.age 
} 

// create the model to export 
var custom = mongoose.model('customModel', customSchema) 

module.exports = custom 

まずで

server.jsで

var mongoose = require('mongoose') 
    var Model = require('./model') 

    mongoose.Promise = global.Promise; 
    mongoose.connect('**dbUrl**') 

    var NewData = new Model({ 
     name: 'Tolsee' 
    }) 

    NewData.populate({ age: 15 }) 

    NewData.save(function(err){ 
     if (err) { 
      throw err 
     }else{ 
      console.log('Your data is saved successfully') 
     } 
    }) 

、あなたは、スキーマを使用するためにモデルを作成する必要があります。これらのモデルのインスタンスは、定義したカスタムメソッドを使用できるドキュメントです。

関連する問題