gpt4 book ai didi

javascript - 如何从数据库异步获取数据?

转载 作者:行者123 更新时间:2023-12-03 00:48:13 25 4
gpt4 key购买 nike

我在两个用户之间创建了一个聊天应用程序。加载客户端时,user1 被分配一个值,而 user2 在启动时未定义。当用户单击屏幕截图左侧的用户列表按钮时,将分配 user2。所以现在我有 user1 和 user2 所以现在我想获取 user1 和 user2 之间的所有数据,但我得到一个空数组。当点击后设置 user2 时,如何调用 conversation.find({ $and : [ { user1: user1 }, { user2: user2 } ] })

注意:conversation.find({}) 工作正常,但 conversation.find({ $and : [ { user1: user1 }, { user2: user2 } ] }) 不起作用。

下面的代码不起作用:

let conversation = db.collection('conversation'); 
let user1,user2;

socket.on('GET_USER', function (data) {
console.log(data);
user2 = data.user2;
});

socket.on('LOGGEDIN_USER', function(data) {
console.log(data);
user1 = data.user1;

console.log("This is user1 "+ user1)
console.log("This is user2 "+ user2)

conversation.find({ $and : [ { user1: user1 }, { user2: user2 } ] }).toArray(function (err, res) {
if(err){
throw err;
}

console.log(res)
// Emit the messages
io.emit('RECEIVE_MESSAGE', res);
})

});

截图:

enter image description here

聊天截图:

enter image description here

最佳答案

您可以使用Promises

let conversation = db.collection("conversation");
const waitForUser2 = new Promise((resolve, reject) => {
socket.on("GET_USER", function (data) {
resolve(data.user2);
});
});
const waitForUser1 = new Promise((resolve, reject) => {
socket.on("LOGGEDIN_USER", function (data) {
resolve(data.user1);
});
});
Promise.all([
waitForUser1,
waitForUser2
]).then(([user1, user2]) => {
console.log("This is user1 " + user1);
console.log("This is user2 " + user2);
conversation.find({
$and: [
{user1: user1},
{user2: user2}
]
}).toArray(function (err, res) {
if (err) {
throw err;
}
console.log(res);
// Emit the messages
io.emit("RECEIVE_MESSAGE", res);
});
});

关于javascript - 如何从数据库异步获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53159032/

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