使用Mongoose在Mongo DB中存储Javascript对象数组

时间:2015-06-07 12:37:47

标签: javascript arrays node.js mongodb mongoose

我有一个[{key: ..., type: ..., value: ...}]形式的数组,并希望将其存储在以下模式的fields字段中:

var articleSchema = mongoose.Schema({
  name: {
    type: String,
    unique: true,
    required: true
  },
  updated: {
    type: Date,
    default: Date.now
  },
  pageviews: {
    type: Number,
    default: 0
  },
  fields: [{
    key: String,
    type: String,
    value: String
  }],
  image: String
});

我这样做如下,我的Javascript数组引用为keyValueObj

Article.findOneAndUpdate(
  { name: articleName },
  {
    fields: keyValueObj
  },
  { upsert: true },
  callback
);

但是,fields字段中存储在数据库中的所有字符串都是这样的字符串数组:["[object Object]"]

如何存储我的Javascript数组,使其与我的mongoose架构正确匹配?

1 个答案:

答案 0 :(得分:0)

我能够使用Molda's使用单独架构的想法解决这个问题。

fields中更新的articleSchema字段现在如下所示:

fields: [{
  type: Schema.Types.ObjectId,
  ref: 'Field'
}]
然后我将数组转换为模式对象数组,如下所示:

keyValueObj = keyValueObj.map(function(fieldObj){
  return new Field({
    key: fieldObj.key,
    type: fieldObj.type,
    value: fieldObj.value
  });
});

然后我可以在初始代码中存储keyValueObj