我发现另一个人在询问值覆盖问题,但未得到答复。希望有人能指出我所缺少的愚蠢的东西!这是要点...

var vote = req.body.vote;
var boolVote;

(vote === 'good') ? boolVote = true : boolVote = false;
                           //  these square brackets were the issue  ----------\/
Model.findOneAndUpdate({firstname:'Jane'},{$set:{'event.attempt.judge1':[boolvote]}},
                  {new: true},(err,lifter)=>{console.log(lifter.event.attempt.judge1})


我已经将其分解为基本功能,因为程序中的boolVote会将console.log作为正确的值(如果表决===“好”,则为true,否则为false),但是无论我如何重新排列它,始终将其更新为DB ...

原来boolVote是这个

var boolVote = ()=>(vote === 'good') ? true : false;


这也不起作用。我可以毫无问题地更改mongo CLI中的值。

还有其他人在将FALSE值保存到MongoDB时遇到问题吗?如果是这样,需要什么才能使其正常工作,如果没有,我在做什么错呢???

在此先感谢您的帮助,我在这里拔头发。

最佳答案

您可以像这样简单地编写三进制,我对js不熟悉,但是在其他程序语言(如java)中,语法与以下相同

var boolVote = vote === 'good'  ? true : false;


要么

var boolVote = ( vote === 'good' )  ? true : false;


但是当你这样做

var boolVote = () => ( vote === 'good' )  ? true : false;


这里的boolVote是没有参数的Function,因此您需要调用boolVote()以获得其值

编辑

event.attempt.judge1是一个字段,但是在update方法中用方括号括起来作为数组时,无论是true / false还是非空数组都解析为true,在db中进行了更新

Model.findOneAndUpdate(
    {firstname:'Jane'},
    {$set:{'event.attempt.judge1':boolvote}}, //removed []
    {new: true},
    (err,lifter)=>{console.log(lifter.event.attempt.judge1)}
)

关于node.js - mongoose.findOneAndUpdate()更改保存在我的Express应用中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48313342/

10-16 23:19