gpt4 book ai didi

javascript - MongoClient的findOne()永远不会在Electron上解析,即使填充了集合

转载 作者:行者123 更新时间:2023-12-03 12:36:41 26 4
gpt4 key购买 nike

我正在使用Electron制作一个Web应用程序,并且已成功连接到Mongo DB Atlas数据库,并且能够向其发送信息。但是,我似乎无法检索到它。我包括的第一段代码是如何连接数据库。

MongoClient.connect(URI, (err, client) => {

if (err){
console.log("Something unexpected happened connecting to MongoDB Atlas...");
}

console.log("Connected to MongoDB Atlas...");

currentDatabase = client.db('JukeBox-Jam-DB'); /* currentDatabase contains a Db */
});
然后,这第二个片段就是我一直在写数据库的方式,这似乎工作得很好。
ipc.on('addUserToDatabase', (event, currentUser) => {

const myOptions = {
type: 'info',
buttons: ['Continue'],
defaultId: 0,
title: 'Success',
message: 'Your account has been created.'
};

dialog.showMessageBox(mainWindow, myOptions);

currentCollection = currentDatabase.collection('UsersInformation');
currentCollection.insertOne(currentUser);

});
最后,这是我一直试图用来从数据库中检索信息的代码。我看不到我可能在哪里犯错,以致它不能用于检索,但是可以用于编写。根据我的理解,findOne()在不带参数的情况下应仅返回一个Promise,该Promise解析为与传递给它的查询匹配的第一个条目。如果未提供查询,它将解析为首先放在数据库中的项目。如果没有与查询匹配的条目,则应解析为null。任何想法为什么这不起作用?
ipc.on('checkUsernameRegistration', (event) => {

currentCollection = currentDatabase.collection('UsersInformation');

let myDocument = currentCollection.findOne(); /* I don't understand why this isn't working! */

console.log(myDocument); /* This prints Promise { <pending> } */

if (myDocument !== null){ /* If myDocument is not null, that means that that there is already someone with that username in the DB. */


}

});
感谢所有试图帮助我的人!我已经被困了几个小时了。

最佳答案

尝试使用async/await:

ipc.on('checkUsernameRegistration', async (event) => {
currentCollection = currentDatabase.collection('UsersInformation');

let myDocument = await currentCollection.findOne({ _id: value });

if (myDocument !== null){
console.log(myDocument);
}
});

或者,您需要传递 callback,如下所示:
currentCollection.findOne({ country: 'Croatia' }, function (err, doc) {
if (err) console.error(err);
console.log(doc);
});
发生这种情况是因为 queries are not promises。实际上,我建议您研究node.js中 asyncsync代码之间的区别。只是为了了解应将回调传递给函数的位置,以及可以在哪里简单地编写 await Model.method({ options })即可。

关于javascript - MongoClient的findOne()永远不会在Electron上解析,即使填充了集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66730396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com