gpt4 book ai didi

javascript - mongoDB 通过查找获取 'undefined'

转载 作者:可可西里 更新时间:2023-11-01 10:39:00 25 4
gpt4 key购买 nike

我想使用所有值

bericht.find({
room: room
}).toArray(function(err, docs) {
assert.equal(err, null);
str2 = str2 + docs.message;

这个函数可以找到,唯一的问题是我一直得到'undefined'。但我想使用值和 socket.emit 值到客户端大小,以便可以在那里使用所有消息。有谁能够帮我?我该怎么做。

const url = 'mongodb://localhost:27017';

io.on('connection', (socket) => {

var str2 = [];

// Database Name
const dbName = 'chatapplication';


const findMessageFromRoom = function(room, db, callback) {
// Get the messages from certain room
const bericht = db.collection('Bericht');
// Find some documents
bericht.find({
room: room
}).toArray(function(err, docs) {
assert.equal(err, null);
str2 = str2 + docs.message;
// callback(docs);
});
console.log(str2);
socket.emit('test1', str2);
};

function getAllMessagesInRoom(room) {
MongoClient.connect(url, function(err, client) {
assert.equal(null, err);
console.log("Connected successfully to server");

const db = client.db(dbName);

findMessageFromRoom(room, db, function() {
client.close();
});

});
}

)
};

最佳答案

Node.js 是异步的,它不会等待数据库查询完成,只是立即记录 str2 变量。它当时未定义,因此您会在控制台上收到“未定义”消息。

像这样使用它:

bericht.find({
room: room
}).toArray(function(err, docs) {
assert.equal(err, null);
str2 = str2 + docs.message;
// callback(docs);

console.log(str2);
socket.emit('test1', str2);
});

关于javascript - mongoDB 通过查找获取 'undefined',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50583799/

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