mongodb
我使用带有节点的 npm驱动程序。
我有
collection.findOne({query}, function(err, result) {
//do something
}
问题是说我没有任何结果,err
仍然null
是我是否找到结果。我怎么知道查询没有找到结果?
我也试过
info = collection.findOne(....
但这info
只是undefined
(它看起来是异步的,所以我不认为这是要走的路……)
未找到任何记录不是错误情况,因此您要查找的是result
. 由于任何匹配的文件总是“真实的”,您可以简单地使用简单的if (result)
检查。例如,
collection.findOne({query}, function(err, result) {
if (err) { /* handle err */ }
if (result) {
// we have a result
} else {
// we don't
}
}
以下所有这些答案都已过时。findOne 已弃用。最新的 2.1 文档建议使用
find(query).limit(1).next(function(err, doc){
// handle data
})
简单来说:
collection.findOne({query}, function(err, result) {
if (!result) {
// Resolve your query here
}
}
如今 - 从节点 8开始- 您可以在async
函数中执行此操作:
async function func() {
try {
const result = await db.collection('xxx').findOne({query});
if (!result) {
// no result
} else {
// do something with result
}
} catch (err) {
// error occured
}
}
如果结果为空,则 mongo 未找到与您的查询匹配的文档。是否尝试过来自 mongo shell 的查询?
collection.findOne({query}, function(err, result) {
if (err) { /* handle err */ }
if (result.length === 0) {
// we don't have result
}
}