mongoDB получает 'undefined' при поиске - PullRequest
0 голосов
/ 29 мая 2018

Я хочу использовать все значения, которые

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();
        });

      });
    }

  )
};

1 Ответ

0 голосов
/ 29 мая 2018

Node.js асинхронный, он не будет ждать завершения запроса к базе данных, просто немедленно регистрирует переменную str2.Он не определен в то время, поэтому вы получите сообщение «undefined» на консоли.

Используйте его следующим образом:

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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...