繁体   English   中英

为什么我的猫鼬objectId请求返回一个空数组?

[英]Why my mongoose objectId request return an empty array?

我过去一天没有找到答案。

这是我的猫鼬模式:

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},但是什么也没有。

谢谢

好的,我找到了原因。

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);
    }
};

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM