Node.js 如果findOne()没有';你不还文件吗?

Node.js 如果findOne()没有';你不还文件吗?,node.js,mongodb,Node.js,Mongodb,我有一个查询MongoDB数据库的函数。如果在数据库中找不到用户(文档),则创建一个新用户(文档)。如果找不到文档,我似乎无法找到findOne返回的内容。我将如何添加此功能。以下是函数: async function getUserData(_key){ const client = new MongoClient(mongoUri, { useNewUrlParser: true, useUnifiedTopology: true }); try{ await client.conn

我有一个查询MongoDB数据库的函数。如果在数据库中找不到用户(文档),则创建一个新用户(文档)。如果找不到文档,我似乎无法找到findOne返回的内容。我将如何添加此功能。以下是函数:

async function getUserData(_key){
const client = new MongoClient(mongoUri, { useNewUrlParser: true, useUnifiedTopology: true });
try{
    await client.connect();
    const collection = client.db("myDb").collection("myCollection");
    const query = {t_id: String(_key[0]), c_id: String(_key[1]), u_id: String(_key[2])};
    
    const data = await collection.findOne(query);
    const returnData = {
                            u_id: data.u_id, 
                            t_id: data.t_id,
                            c_id: data.c_id
                        };

    return returnData;
} finally {
    await client.close();   
}}

这里的用例是什么?如果您说如果找不到新文档,您将创建一个新文档,这基本上意味着您最终计划使用您正在查询的数据到数据库。在这种情况下,使用upsert=true的update。“如果没有找到文档,我似乎无法找到findOne返回的内容。”无论文档中是否有详细说明,都可以在2分钟或更短的时间内在您的开发环境中检查,不是吗?正如上面所指出的,这种操作通常被称为upsert。Mongodb可以做得更好。谢谢!Sergio啊,是的,我正努力为它编写一个测试,但成功地实现了一个。作为参考,它只返回null。