簡體   English   中英

貓鼬嵌入式文檔更新不持久

[英]Mongoose embedded document update not persisting

我目前正在使用MEAN堆棧,正在嘗試更新嵌入式文檔。 一切似乎都可以執行,但是刷新后數據不會持久:

    // Soon to be update answer
exports.updateAnswer = function(req, res) {
  var ansId = req.params.aid;
  var result;
  Poll.findById(req.params.id,function(err, poll){
    if(err) { return handleError(res, err); }
    poll.answers.forEach(function(answer){
      if(ansId == answer._id) result = answer;
    })
    var updated = _.merge(result, req.body);
    poll.markModified('answers');
    updated.save(function (err) {
      if (err) { return handleError(res, err); }
      return res.json(200, poll);
    });
  });
};

我的架構:

'use strict';

var mongoose = require('mongoose'),
    Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId;

var AnswerSchema = new Schema({
  answer: String, 
  votes:{type: Number, default: 0}
});

module.exports = mongoose.model('Answer', AnswerSchema);

var PollSchema = new Schema({
  author: String,
  question: String,
  answers: [AnswerSchema]
});

module.exports = mongoose.model('Poll', PollSchema);

放置請求:

 $scope.vote = function(answer) {
      $scope.pollObj.answers.forEach(function(el,indx){
        if(el['_id'] == $scope.radioVal.selected) {
          el['votes']++;
          $http.put('/api/polls/'+$scope.pollId+'/answers/'+el['_id'],el).
          success(function(data){
            console.log(data);
          })
        }
      })

laggingreflex提供的答案:

exports.updateAnswer = function(req, res) {
      var ansId = req.params.aid;
      var result;
      Poll.findById(req.params.id,function(err, poll){
        if(err) { return handleError(res, err); }
        poll.answers.forEach(function(answer){
          if(ansId == answer._id) result = answer;
        })
        var updated = _.merge(result, req.body);
        poll.markModified('answers');
        poll.save(function (err) { // <== change here
          if (err) { return handleError(res, err); }
          return res.json(200, poll);
        });
      });
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM