Mongoose - 如何使这些数据更有用?

时间:2011-10-06 01:18:11

标签: json mongoose

我在节点/快速应用程序中输出以下数据结构。我想让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 }
});

1 个答案:

答案 0 :(得分:0)

好的,一位同事能够为我解答这个问题。我没有发布相关代码,我没有意识到问题究竟在哪里。但对于那些可能遇到这个问题的人:

如果在保存时将嵌入式文档推送到模型中,则可能需要执行forEach循环,而不是将嵌入式文档(在本例中为Feeds)推送到一起。使用forEach,数据库将feed直接保存到feeds数组,而不是创建那些奇怪的分组。

这正确推送了Feed:

  req.body.feed.forEach(function(feed){
     page.feeds.push(feed);
  });

如果您遇到同样的问题并需要更多解释,请与我们联系。