📅  最后修改于: 2023-12-03 14:44:21.816000             🧑  作者: Mango
在 TypeScript 中使用 MongoDB 的 Node.js 驱动程序时,我们可以使用 Promise 来处理 findOne
方法返回的结果。如果 findOne
方法没有找到任何匹配的文档,则返回 null
。
下面是一个使用 Promise 处理无结果的 findOne
示例:
import { MongoClient, Db, Collection } from 'mongodb';
async function findUserById(userId: string): Promise<object | null> {
const client = await MongoClient.connect('mongodb://localhost:27017');
const db: Db = client.db('mydatabase');
const usersCollection: Collection = db.collection('users');
try {
const user = await usersCollection.findOne({ id: userId });
return user;
} catch (error) {
console.error('Error occurred while finding user:', error);
return null;
} finally {
client.close();
}
}
// 调用示例
findUserById('123')
.then((user) => {
if (user) {
console.log('User found:', user);
} else {
console.log('User not found');
}
})
.catch((error) => {
console.error('Error occurred:', error);
});
在上面的示例中,我们通过 MongoClient
连接到 MongoDB 数据库,并获取到需要操作的集合。然后我们使用 findOne
来查询指定的用户。如果找到匹配的用户,我们返回该用户对象,否则返回 null
。
在调用 findUserById
函数时,我们通过 then
链式调用处理成功的回调,如果找到了用户则进行相应的处理;如果没有找到用户则打印相关信息。如果发生错误,我们使用 catch
来处理错误的回调。
请注意,在使用 findOne
方法时,我们需要在 try-catch
语句块中捕获错误。在无论找到用户与否都会执行的 finally
块中,我们关闭了 MongoDB 连接。
这样,我们就可以使用 Promise 来处理 MongoDB findOne
方法无结果的情况了。