我过去一天找到答案,徒劳无功。
这是我的猫鼬模式:
var schema = new mongoose.Schema({
value: {type: String},
title: {type: String},
date: { type: Date, default: Date.now },
packId: {type: mongoose.Schema.Types.ObjectId, ref:'Pack'}
});
这是我的要求:
(其中packId是ObjectId)
var getElements = function(packId, callback ){
Card.find(
{packId: packId},
function(err,els){
if(err){
console.log(err);
}else{
console.log(els);
}
}
);
};
**这是一个表格元素**
{
"title" : "test1",
"value" : "test1",
"packId" : ObjectId("54f9ebaae312727c45b2a80e"),
"_id" : ObjectId("54f9ebaae312727c45b2a820"),
"date" : ISODate("2015-03-06T18:02:18.544Z"),
"__v" : 0
}
我不明白为什么console.log(els)返回[],因为表中有元素。我试过了{type:Sting}但没有任何东西。
由于
答案 0 :(得分:0)
好的,我找到了原因。
models.Card.saveCards(completeData.cards,packData.cid, function(){
models.Card.getCards(packData.cid,function(cards){
...
}
}
在保存所有卡之前调用第二种方法getCards。
所以这就是我的做法
var saveCards = function( cardsData, packId, callback ){
var nbCards = cardsData.length;
var start = 0;
var saveCard = function(cardData,packId) {
cardData.packId = packId;
var card = new Card(cardData);
card.save(function (err, card) {
if (err) {
console.log(err);
} else {
if(start<nbCards-1){
start++;
saveCard(cardsData[start],packId);
}else{
callback();
}
}
});
};
if( start === 0){
saveCard(cardsData[start],packId);
}
};
希望这会有所帮助