如何阻止MongoDB向我的对象添加值?

时间:2014-10-12 15:10:03

标签: mongodb mongoose journaling database

我正在写一个小的个人项目,需要写入数据库并获取要用d3js显示的内容。所以我正在使用包含类似{x: "2004-10-02", y:20}等的对象...现在我发现当我使用{{1}更改y0:0的值时,mongoDB会添加y1: 20甚至y用Mongoose。

我有$set

Schema

工作正常。我可以插入与本机构发送请求的文件(不完整的模型):

var projectSchema = mongoose.Schema({
   key : String, 
   description: String,
   values: [{x: Date, y: Number, comment: String}]
});

并使用此处理请求:

{
    name: "name of the Project", 
    description: "insert descritption"
}

然后我将值添加到var newProjectDetails = req.body; var np = new Project(newProjectDetails); np.save(function (err) { if (err) { return err; } else { console.log("Project saved"); } }); 数组(参见Schema上面)并且它第一次正常工作,但如果我尝试覆盖数组中的一个条目,我会得到一个混乱的对象,带有额外的值这似乎是values属性的旧值。

以下是我在y数组中添加条目的方法:

values

但是当我获取内容时,我在数组中遇到了一个奇怪的问题:

我在控制台中得到了这个对象:

Project.findByIdAndUpdate(req.body._id, 
   { $set: { values: req.body.values } }, 
   function(err, tank){
     if(err){
       res.send(err);
     } 
       res.send(tank);
   })

这在Chrome中的RestWebServiceClient扩展中:

  {
    "x": "2014-10-12T00:00:00.000Z",
    "y": 20,
    "comment": "doanjas dfgixGHWXV",
    "_id": "543a96c3a402c9ad17528d52"
  }

但是在控制台内部,当我使用Angular迭代集合时,我得到了这个:

{
  "x": "2014-10-12T00:00:00.000Z",
  "y": 20,
  "comment": "doanjas dfgixGHWXV",
  "_id": "543a96c3a402c9ad17528d52"
}

这让我发疯,如果我映射数组并摆脱这个,为什么我会做那些额外的工作?

0 个答案:

没有答案