Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB正在连接,但未更新_Javascript_Node.js_Mongodb_Backend - Fatal编程技术网

Javascript MongoDB正在连接,但未更新

Javascript MongoDB正在连接,但未更新,javascript,node.js,mongodb,backend,Javascript,Node.js,Mongodb,Backend,我已经有一段时间没有在NodeJS中使用MongoDB了,所以我有点生疏了。我已经编写了下面的代码,它连接正确,但由于某些原因,这些值没有更新。有人能告诉我我的代码有什么问题吗 MongoClient.connect(url、函数(err、db){ log(“成功连接到Mongodb:log请求(令牌和发送方)”; var query={sender:senderthatask}; db.collection(“requestFrom”).updateOne( 查询 {$set:{date:n

我已经有一段时间没有在NodeJS中使用MongoDB了,所以我有点生疏了。我已经编写了下面的代码,它连接正确,但由于某些原因,这些值没有更新。有人能告诉我我的代码有什么问题吗

MongoClient.connect(url、函数(err、db){
log(“成功连接到Mongodb:log请求(令牌和发送方)”;
var query={sender:senderthatask};
db.collection(“requestFrom”).updateOne(
查询
{$set:{date:new date(date.now()).toISOString()},
{$setOnInsert:{
令牌:使用令牌,
日期:新日期(date.now()).toISOString(),
计数:0,
发件人:senderThatAsked},
{upsert:true},函数(err,res){
如果(错误)抛出错误;
log('请求已被记录!正在查找…');
db.close();
});
});

将$set和$setOnInsert放在一个对象中请尝试这样使用'exec:
update({}).exec((err,res)=>{}).exec实际上做什么?下一句话马上说吗?另外,我没有使用mongoose,exec不是mongoose的一部分吗?这与您传递给更新的回调相同。但我认为exec只是mongoose的一部分,对吗?它告诉我“…exec不是一个函数”哦,对了,对不起!没有看到你在哪里没有使用mongoose my bad。所以现在它们是一个对象,它说“不能同时更新”date“和”date“是的从$setOnInsert删除日期编辑答案只需从
$setOnInsert
(这是默认值;如果您在
$set
中设置参数,则无需在
$setOnInsert
中再次设置参数)这很有效!谢谢!现在如果我希望在更新后立即执行查找,那么最好的位置是在回调函数中吗?是的,如果它依赖于更新,则应该在回调函数中。
MongoClient.connect(url, function(err, db) {
   console.log("Connected successfully to Mongodb: Log Request (token and sender)");
   var query = {sender:senderThatAsked};
   db.collection("requestFrom").updateOne(
       query,
       {
            $set:{date: new Date(Date.now()).toISOString()},
            $setOnInsert: {
                token:tokenUsed,
                count: 0,
                sender:senderThatAsked 
            }
        },
       {upsert: true}, function(err,res){
           if (err) throw err;
           console.log('The request has been logged! Now Finding...');
           db.close();
       });
   });