我是一個初學者,使用nodejs和mongoose。如何使用貓鼬先保存並在下面找到
所以我有一個這樣的麻煩:
後,創建一個架構模型,並把數據並保存,我想再次找到。
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var typePlantSchema = new Schema({
namePlant:String,
estimateDuration:Number,
conditionPh:Number
});
var typePlantModels= mongoose.model('typePlant',typePlantSchema);
var typePlantModel = new typePlantModels();
mongoose.connect('mongodb://localhost/AeroDB', function (err) {
if(err) {
console.log('connection error', err);
} else {
console.log('connection successful');
}
});
typePlantModel.namePlant='tam';
typePlantModel.estimateDuration=10;
typePlantModel.conditionPh=7;
typePlantModel.save();
typePlantModels.find({namePlant:"tam"},function(err,docs){
if(err){
console.log(err);
}
else {console.log(docs);}
});
但是當我運行我的代碼第一次,我不能得到任何結果發現。如果再運行一次,我發現1個結果(事件2結果)。這意味着查找功能超過保存功能之前。我認爲這取決於回調函數的順序。那麼你可以有任何解決方案使它工作?的coure,而不是把find函數放在save函數中。 請幫我做到這一點。
更新更多的問題
其實,我想將它轉移到DATABSE API。它看起來像這樣:
var typePlantModels= mongoose.model('typePlant',typePlantSchema);
var typePlantModel = new typePlantModels();
typePlant.prototype=typePlantModel;
typePlant.prototype.findByName=function(name){
self=this;
typePlantModels.find({namePlant:self.namePlant},function(err,docs){
console.log(docs)}
}
module.exports=typePlant;
而且我可以把它放在保存功能或使用save()。然後。請幫我做到這一點。 感謝很多
閱讀要添加自定義的方法,你應該使用貓鼬的方式是打電話之前mongoose.model添加typePlantSchema.methods.findByName = function(){//這個關鍵字是模型,所以你可以在這裏調用this.find(..)}然後簡單地導出模型exports.typePlant = mongoose.model('typePlant',typePlantSchema); – Molda