为什么我得到wrappedPointCut而不是数据?

时间:2016-09-06 12:09:22

标签: node.js mongodb handlebars.js

我有3层嵌套对象存储在mongoDB中。 第一层显示了它应该的名称,第二层也是。 但当它进入第三层时,它会显示文本:“wrappedPointCut” 为什么是这样?而wrapedPointCut是什么意思??

我有一个像这样的把手测试代码:

{{#each tierOne}}
<h2>{{ this.tierOneName }}</h2>
  {{#each tierTwo}}
    <h2>{{ this.tierTwoName }}</h2>        
    {{#each tierThree}}
    <h2>{{ this.tierThreeName }}</h2>
    {{/each}}
  {{/each}}
{{/each}}
</div>

在JS中迭代嵌套对象时,我在控制台中获得了正确的输出。此外,如果我向第三层添加4个对象,我会得到4个标题:“wrapedPointCut”。这必须意味着它知道这里有数据。

这是mongoDB结构: 这是第3层:

var TierThree = new mongoose.Schema({
    tierThreeName : {
        type: String
    }
});

这是第2层:

var TierTwo = new mongoose.Schema({
    tierTwoName : {
        type: String
    },
    tierThree : [TierThree]
});

这是第1层:

var TierOne = mongoose.Schema({
    tierOneName : {
        type: String,
        index:true
    },
    tierTwo: [TierTwo]

});

以下是将第三层导出到monngoDB的功能:

module.exports.createTierThree = function(newTierThree, tierOne, tierTwoName , callback){
for (var i = 0; i < tierOne.tierTwo.length; i++) {
        if(tierOne.tierTwo[i].tierTwoName == tierTwoName ){                
            tierOne.tierTwo[i].tierThree.push(newTierThree);
            tierOne.tierTwo[i].save(function (err) {
                if (!err) console.log('Success!');
            });
        }
    }
};

1 个答案:

答案 0 :(得分:0)

问题似乎是我在添加到数据库时做错了什么。如果我使用shell命令添加到数据库,一切都很好。所以现在的问题是将mongoDB shell命令转换为JS。