我是mongodb的新手,正在尝试将输入中键入的名称与保存在我的集合中的名称进行比较,如果存在相同的名称,我想在此对象名称的数据库中增加“ numberOfSearches”,如果没有让它在集合中创建那个。毕竟我不知道如何在“ if”中比较这些名称,否则应该使用Find方法还是该方法?
app.post('/stronka', function(req,res){
var obj = {name: req.body.chosenCity, numberOfSearches: 1};
if(db.collection('miasta').find({name: obj.name})){
db.collection('miasta').updateOne(
{"name": obj.name},
{$inc: {"numberOfSearches": 1}}
)
res.redirect('/stronka');
console.log("first option");
}
else{
db.collection('miasta').insertOne(obj, function(err, result){
if(err) return console.log(err);
console.log('saved to database')
res.redirect('/stronka');
})
console.log("sec option");
}
})
答案 0 :(得分:0)
您可能会遇到的一个问题是db.collection('...').find()
将返回异步Promise
而不是同步值。为了使用find()
的结果,您需要像这样await
:
app.post('/stronka', async function(req,res){ <-- note the addition of the async keyword
var obj = {name: req.body.chosenCity, numberOfSearches: 1};
const result = await db.collection('miasta').find({ name: obj.name });
if (result) {
....
} else {
...
}
});
您将需要对updateOne
和对MongoDb的其他调用应用类似的原则,但我将其留给您练习(: