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