方法は、モデルの現在のインスタンスと対話するために使用されています。例:あなたはインスタンスと対話したいのですが、モデルに関連するものをしないとき
var AnimalSchema = new Schema({
name: String
, type: String
});
// we want to use this on an instance of Animal
AnimalSchema.methods.findSimilarType = function findSimilarType (cb) {
return this.find({ type: this.type }, cb);
};
var Animal = mongoose.model('Animal', AnimalSchema);
var dog = new Animal({ name: 'Rover', type: 'dog' });
// dog is an instance of Animal
dog.findSimilarType(function (err, dogs) {
if (err) return ...
dogs.forEach(..);
})
静は(「ローバー」という名前のすべての動物のための例の検索のために)使用されています。
モデルのインスタンスを(dbに)挿入/更新する場合は、methods
が必要です。あなただけのものを保存/更新する必要がある場合は、save
関数(すでにMongooseに存在します)を使用することができます。例:
schema.statics.createUser = function(callback) {
var user = new this();
user.phone_number = "jgkdlajgkldas";
user.save(callback);
};
しかし、私はどのように行うことができますメソッド内から 'dog.save()'? 'this'は' dog'を参照するので、 – Industrial
'this.save()'です。 – alessioalex
@alessioalex - これはmongoose docsの例と似ていますが、タイプを再指定します: 'return this.model( 'Animal ').find({type:this.type}、cb); 'このメソッドをAnimalスキーマに追加するので、なぜここで' model(' Animal ') 'を使用しなければならないのか理解できませんでした。おそらくそれはオプションです - あなたはなぜそれがドキュメントのように書かれているのか分かりますか? – UpTheCreek