0

我在 nodeJs 中的 mysql 查询有问题。在实践中,我进行查询,它会向我返回一个带有查询结果的 json,然后我必须将查询返回的结果插入到一个数组变量中。我只是不知道如何滚动和选择数组的元素,因为当我尝试选择诸如“名称”之类的元素时,它总是给我不确定的。

mysql查询:

conn.query("SELECT * FROM user WHERE id=?",[id] ,function(err, result){
        if(!err){
          if(result.length == 1){
            //Invio segnale di logged-in al client
            conn.end();
            resolve(result[0]);
          }
        }
      })

代码节点:

socket.on('index', function(){
  socket.emit('index', counterOnline);
  if(counterOnline > 0){
    console.log(userOnline);
    socket.emit('userOnline', userOnline);
  }
})

日志:

[ Promise { RowDataPacket { id: 2, nome: 'matteo', cognome: 'busacca', mail: 'mbusacca98@gmail.com', username: 'mbusacca', password: '9827c06ddb1fb8a6f62555829bda33dd', city: '', instagram: '', linkedin: '', facebook: '', photo: '/fotoUtenti/2.jpg' } } ]

如果我这样做,console.log (userOnline[0].nome); 我得到“未定义”

4

2 回答 2

0

resolve(result[0])将返回一个承诺,你必须使用:

var userOnline = [];
socket.on('online', function(idUser){
  counterOnline++;
   dataUser.online(idUser).then(function(idUser) {
     userOnline.push(idUser);
   })

})
于 2020-01-05T09:55:03.630 回答
0
var userOnline = [];
socket.on('online', function(idUser){
  counterOnline++;
  userOnline.push(dataUser.online(idUser));
})

dataUser.online(idUser) :

function online(id){

var response = new Promise(function(resolve, reject){

var conn = connect();

  conn.connect(function(err){
    if(!err){
      //query ricerca utente nel db
      conn.query("SELECT * FROM user WHERE id=?",[id] ,function(err, result){
        if(!err){
          if(result.length == 1){
            //Invio segnale di logged-in al client
            conn.end();
            resolve(result[0]);
          }
        }
      })
    }
  })

  })

  return response;
   }
于 2020-01-05T10:56:52.090 回答