【问题标题】:How to save an object inside mongodb如何在mongodb中保存对象
【发布时间】:2012-04-11 21:04:16
【问题描述】:

我创建了一个表单,其中包含某些字段。我还有一个包含字段数组的字段。该字段的“req.body.lead”输出为:

// output of console.log("req.body.lead",req.body.lead);
     business_address_attributes: 
      { address_type: 'Business',
        street1: 'Street 1...',
        street2: 'Street 2...',
        city: 'City...',
        state: 'State...',
        zipcode: 'Zip Code...',
        country: '' },

我可以将整个对象存储在另一个对象中:

      var address = new Addresses(req.body.lead.business_address_attributes);

在 mongodb 中,我已将一个字段声明为:

   business_address_attributes : [Addresses],
   //Note: [Addresses] refers to address class

现在,当我尝试使用以下方法存储内部 monogdb 时,出现错误,无法保存线索

var lead = new Leads(req.body.lead);
var address = new Addresses(req.body.lead.business_address_attributes);
lead.business_address_attributes.$push(address);
lead.save();
// console.log(lead.business_address_attributes) now gives following output:
    [ { address_type: 'Business',
  street1: 'Street 1...',
  street2: 'Street 2...',
  city: 'City...',
  state: 'State...',
  zipcode: 'Zip Code...',
  country: '',
  _id: 4f857a2e491383dc64000008 } ]

我不知道如何解决这个问题。谁能帮忙。

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    我对这个问题的解决方案是将包含文档数组的字段声明为引用数组。

    Address 文档创建架构:

      var AddressSchema = new Schema({
         //attributes
      });
    

    并创建一个模型:

    mongoose.model('address', AddressSchema)

    现在可以在父文档中说

    business_address_attributes : [{ type: Schema.ObjectId, ref: 'address' }]
    

    新建文档时,先创建Address文档,保存,获取已保存文档的ID,推送到lead.business_address_attributes

    要获取包含地址而非 ID 的文档,请使用 mongoose 的 populate('business_address_attributes') 方法。

    【讨论】:

      猜你喜欢
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      • 2017-06-26
      • 2018-08-21
      相关资源
      最近更新 更多