0

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

我有这个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");
  }
});

然后我向values数组中添加值(参见上面的架构),它第一次工作正常,但是如果我尝试覆盖数组中的一个条目,我会得到一个混乱的对象,额外的值似乎是旧值y财产。

下面是我如何在values数组中添加一个条目:

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

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

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

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

这在 Chrome 中的 RestWebServiceClient 扩展中:

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

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

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

这让我发疯,我应该映射数组并摆脱它,我为什么要做那些额外的工作?

4

0 回答 0