檢查出official documentation後,我仍然不知道如何創建內mongoose
使用創建&更新文檔的方法。創建方法用貓鼬更新和保存文檔?
那麼我該如何做到這一點?
我想到的是這樣的:
mySchema.statics.insertSomething = function insertSomething() {
return this.insert(() ?
}
檢查出official documentation後,我仍然不知道如何創建內mongoose
使用創建&更新文檔的方法。創建方法用貓鼬更新和保存文檔?
那麼我該如何做到這一點?
我想到的是這樣的:
mySchema.statics.insertSomething = function insertSomething() {
return this.insert(() ?
}
方法用於與模型的當前實例進行交互。例如:
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中)。例如:
var Animal = mongoose.model('Animal', AnimalSchema);
var dog = new Animal({ name: 'Rover', type: 'dog' });
dog.save(function(err) {
// we've saved the dog into the db here
if (err) throw err;
dog.name = "Spike";
dog.save(function(err) {
// we've updated the dog into the db here
if (err) throw err;
});
});
從靜態方法中,你也可以通過做創建一個新文件:
schema.statics.createUser = function(callback) {
var user = new this();
user.phone_number = "jgkdlajgkldas";
user.save(callback);
};
我也這樣做了 - 有些事情讓我困擾於創建一個新的this(),但我不知道該怎麼做。有沒有其他人有一個很好的方法來做到這一點? – basicallydan
如果你有: var model = bla bla之前的靜態,你可以在裏面做新模型(),因爲它的範圍可以達到 –
非常感謝。在我的情況下只有一件事:如果你嘗試在貓鼬查詢中使用'this',它將指向這個查詢的this,而不是這個靜態實例的this。那是我的問題。 –
不要認爲你需要創建一個調用.save()的函數。你需要做之前,模型保存可以用.pre()
如果你想檢查來完成,如果在創建模型或更新任何做this.isNew()
一個檢查,但我怎麼能這樣做從一個方法內的'dog.save()'? – Industrial
'this.save()','因爲將this'指'dog' – alessioalex
@alessioalex - 我注意到這類似於在礦井貓鼬文檔的例子,但他們respecify喜歡的類型:'返回this.model(「動物').find({type:this.type},cb);'我從來不明白爲什麼我們必須在這裏使用'model'('Animal')',因爲我們將這個方法添加到Animal模式中。據推測這是可選的 - 你知道爲什麼它是這樣寫在文檔中嗎? – UpTheCreek