0

私は、データベースに書き込む必要があり、コンテンツを d3js で表示する必要がある小さな個人的なプロジェクトを書いています。だから私は{x: "2004-10-02", y:20}などを含むオブジェクトを使用しています...今、mongoDBが追加され 、Mongooseで使用 する値を変更した場合y0:0でも 追加されることがわかりました。y1: 20y$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");
  }
});

次に、配列に値を追加し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