5

我正在尝试更新 Mongoose.js 3.1.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 回答