Обновление mongoose json object не работает - PullRequest
0 голосов
/ 15 октября 2018

Я не получаю никаких ошибок или сбоев, но с приведенной ниже схемой я не могу обновить fact1.nested1.

Если не использовать вложенный Json, он работает, поэтому мне удается обновить nested1 с помощью

$set: {'nested1': req.body.newNested1}

Но все, что я пытаюсь обновить, как описано ниже, ничего не меняет.Я провел некоторое исследование и попробовал большинство решений, что-нибудь изменилось в мангусте?Существуют ли другие способы обновления вложенных Jsons без изменения всех других данных в Json.

var mongooseSchema  = new Schema ({
fact1: {
    type: JSON,
    minlength: 1,
    maxlength: 300,
    required: true,
    default: "emptyType"
}})

    var setObj = {
    $set: {'fact1.nested1' : req.body.newNested1}
  }
    User.FactCheck.findByIdAndUpdate(id,{ 
             setObj}
            , {
                upsert: true,
                'new': true
            }).exec(function(err, doc) {


                if (err) return res.send(500, {
                    error: err
                });

                console.log (doc)
                return res.send(doc);
            });

enter image description here

1 Ответ

0 голосов
/ 16 октября 2018

Это работает для меня, я также адаптировал схему, как показано ниже.Также я считаю, что добавление большего количества параметров, чем просто setObj (например, (id, setObj, anotherParam), могло быть причиной того, что это не сработало, так как это было последнее, что я изменил. Ничто другое не помогло мне, даже без ошибок.

     var mongooseSchema  = new Schema ({
     fact1: {
        nested1: Boolean,
        nested2: String     
     }})


    objForUpdate.fact1 = {}
    objForUpdate.fact1 = {  'nested1' : req.body.newnested1,
      'nested2' : req.body.newnested2}

    User.SCHEMAPLAYER.findByIdAndUpdate(id,setObj
            , {
                upsert: true,
                'new': true
            }).exec(function(err, doc) {


                if (err) return res.send(500, {
                    error: err
                });

                console.log (doc)
                return res.send(doc);
            });
...