Javascript MongoDB正在连接,但未更新
我已经有一段时间没有在NodeJS中使用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
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();
});
});