[英]Mongoose embedded document query returning null
我有以下架構:
_schema : {
Prize : new Schema({
prizeName : { type : String },
thumbnailImage : [ String ],
detailImage : [ String ],
prizeCategory : [ {type : String, index : true } ],
prizeDescription : { type : String },
prizePrice : { type : Number, required : true }
}),
Game : new Schema ({
roomName : { type : String, required : true },
openTime : { type : Date },
closeTime : { type : Date },
minPlayers : { type : Number },
maxPlayers : { type : Number, required : true },
numberOfPlayers : { type : Number },
winner : { userId : { type : ObjectId, index : true, ref : 'User'} },
prize : [ this.Prize ],
tag : [ { type : String, index : true } ],
status : { type : Number, index : true },
businessType : { type : Number, required : true, index : true },
mallId : { type : ObjectId, ref : 'Mall' },
registeredPlayers : { type : ObjectId, ref : 'User' }
}),
Schedule : new Schema ({
_id : ObjectId,
time : { type : Date, index : true },
game : [ this.Game ]
}),
}
但是,當我嘗試查詢游戲嵌入文檔時,該對象始終為null。 我這樣查詢:
var Schedule = mongoose.model('Schedule', this._schema.Schedule);
Schedule.findById({'game._id' : req.params._id}).exec(function(err,gameDetail){...});
當我聲明架構和模型時,我做錯了嗎? 我看過很多例子,人們似乎正在做我正在嘗試的事情。 任何幫助將不勝感激! 提前致謝。
看看你的代碼,我的第一個猜測實際上是你的findById
結構不正確。
首先,您使用值req.params._id
來獲取ID。 我見過的大多數代碼示例和我的代碼都使用:id
路由器中的:id
( app.get('/schedules/:id')
),這實際上意味着您要查找的ID存儲在req.params.id
。 你必須在你的代碼中檢查它。
其次,根據我的理解,findById僅用於在這種情況下通過該ID查找Schedule。 嘗試使用普通的查找。
最后一想:你在{'game._id' : req.params._id}
的末尾錯過了一個結束的花括號。
希望有所幫助。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.