我想使用
的所有值bericht.find({
room: room
}).toArray(function(err, docs) {
assert.equal(err, null);
str2 = str2 + docs.message;
这个功能可以找到,唯一的问题是我一直未定义'。但是我想使用值&socket;将值赋予客户端大小,以便可以在那里使用所有消息。有谁能够帮我?我怎么能这样做。
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();
});
});
}
)
};

答案 0 :(得分:0)
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);
});