我在节点/快速应用程序中输出以下数据结构。我想让feeds数组只是一个名字数组:密钥对。我不喜欢“feed”和实际feed数据之间的那种奇怪的编号对象结构。但我无法弄清楚如何在mongoose中手动定义它。任何帮助都是极好的。谢谢!
输出JSON
{
"title": "Testing",
"created_at": "2011-10-05T16:23:26.217Z",
"feeds": [{
"0": {
"name": "twitter",
"key": "person1"
},
"1": {
"name": "twitter",
"key": "person2"
},
"_id": "4e8c847e02edc10035000003"
}]
}
我想要这个:
{
"title": "Testing",
"created_at": "2011-10-05T16:23:26.217Z",
"feeds": [
{
"name": "twitter",
"key": "person1"
},
{
"name": "twitter",
"key": "person2"
}
],
"_id": "4e8c847e02edc10035000003"
}
这是我的架构:
var Feed = new Schema({
name : { type: String }
, key : { type: String }
});
var Page = new Schema({
title : { type: String, required: true, index: { unique: true } }
, feeds : [Feed]
, created_at : { type: Date, required: true, default: Date.now }
});
答案 0 :(得分:0)
好的,一位同事能够为我解答这个问题。我没有发布相关代码,我没有意识到问题究竟在哪里。但对于那些可能遇到这个问题的人:
如果在保存时将嵌入式文档推送到模型中,则可能需要执行forEach循环,而不是将嵌入式文档(在本例中为Feeds)推送到一起。使用forEach,数据库将feed直接保存到feeds数组,而不是创建那些奇怪的分组。
这正确推送了Feed:
req.body.feed.forEach(function(feed){
page.feeds.push(feed);
});
如果您遇到同样的问题并需要更多解释,请与我们联系。