【问题标题】:Mongoose - How can I make this data more usable?Mongoose - 我怎样才能让这些数据更有用?
【发布时间】:2011-12-01 22:30:08
【问题描述】:

我在 node/express 应用程序中从我的架构输出以下数据结构。我想让 feeds 数组只是一个 name:key 对的数组。我不喜欢在“提要”和实际提要数据之间发生的那种奇怪的编号对象结构。但我不知道如何在猫鼬中手动定义它。任何帮助都是极好的。谢谢!

输出的 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 }
});

【问题讨论】:

    标签: json mongoose


    【解决方案1】:

    好的,一位同事为我解答了这个问题。我不发布相关代码很糟糕,我没有意识到问题到底出在哪里。但是对于那些可能会遇到这个问题的人:

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

    这会正确推送提要:

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

    如果您有同样的问题并需要更多解释,请告诉我。

    【讨论】:

      猜你喜欢
      • 2013-07-09
      • 2015-06-13
      • 1970-01-01
      • 1970-01-01
      • 2016-05-07
      • 2015-09-14
      • 2023-03-18
      • 2011-07-20
      • 2012-10-12
      相关资源
      最近更新 更多