5

Mongoose.js 3.1.2 の一部のコンテンツを更新しようとしていますが、これら 2 つの機能を動作させることができません。理由はありますか?ありがとう...

function(req, res) {
  Content.findById(req.body.content_id, function(err, content) {
    // add snippet to content.snippets
    content.snippets[req.body.snippet_name] = req.body.snippet_value;
      content.save(function(err) {
        res.json(err || content.snippets);
    });
  }
}


function(req, res) {
  Content.findById(req.body.content_id, function(err, content) {

      // delete snippets
      delete content.snippets[req.body.snippet_name];
      //content.snippets[req.body.snippet_name] = undefined; <-- doesn't work either

      content.save(function(err) {
        res.json(err || "SUCCESS");
      });

  });
}

私のスキーマは次のようになります。

contentSchema = new Schema(
  title: String,
  slug: String,
  body: String,
  snippets: Object
);
4

1 に答える 1

10

パスを変更済みとしてマークする必要がある場合があります。オブジェクトの埋め込みスキーマを作成していないため、Mongoose はオブジェクト プロパティをチェックしない場合があります。

function(req, res) {
  Content.findById(req.body.content_id, function(err, content) {
    // add snippet to content.snippets
    content.snippets[req.body.snippet_name] = req.body.snippet_value;
    content.markModified('snippets');  // make sure that Mongoose saves the field
      content.save(function(err) {
        res.json(err || content.snippets);
    });
  }
}
于 2012-10-06T05:13:57.143 に答える