当我尝试将高分数据库发送回客户端浏览器时,我只得到字符串“ [Object Object],[Object Object],...”,依此类推,直到数据库结束。
奇怪的是,这仅是当我将其作为innerHTML返回时,因为当我通过console.log()返回时,它会打印出正确的数据。有人知道为什么会这样吗?
server.js
socket.on('hsGo', function() {
db.collection('dat').find({}, {projection: {_id: 0}})
.sort({highscore : -1})
.limit(10).toArray()
.then(function (doc) {
io.to(socket.id).emit('topPlayers', doc);
});
});
client.js
socket.on('topPlayers', function(doc) {
console.log(doc);
//Prints practically the correct data ^^^
document.getElementById('yourscore').innerHTML = doc;
//prints [object object] ^^^
});
答案 0 :(得分:0)
我知道了。我将发布答案,以防将来对任何人有帮助。
由于mongoDB返回一个数组,如果我只是通过innerHTML发送字符串,它将返回一个对象,因为我正在打印数组。客户端上的以下代码对其进行了修复。
document.getElementById('yourscore').innerHTML = JSON.stringify(doc);