我不明白为什么这不起作用。
db.UserConnected.find( {} )
返回
{ "_id" : ObjectId("5ce262920cb02b4724dbdc0d"), "idUser" : null, "mode" : "Passager", "latitude" : 50, "longitude" : 60 }
因此,如您所见,我的UserConnected文档中有一个对象。
以以下代码的安全性插入他,将其记录为新用户。 现在我想做的是更新已经连接的用户...但是这不起作用,我也不知道为什么。
socket.on('new', function(information) {
console.log(information._id);
user = {};
//user already connected
if(information._id !== undefined){
console.log("update user");
user.id = information._id;
user.idUser = information.idUser;
user.mode = information.mode;
user.latitude = information.latitude;
user.longitude = information.longitude;
//Update the user connected here if that user exists
collection.updateOne({"_id" : information._id}, {$set:user} );
socket.emit('user_modified', user);
}else{
console.log("new user");
//nouvel user
user.idUser = information.idUser;
user.mode = information.mode;
user.latitude = information.latitude;
user.longitude = information.longitude;
collection.insertOne(user);
console.log(user);
socket.emit('user_inserted', user);
}
});
如果没有连接,我会像这样发送数据
var information = {"idProfile" : 1, "mode" : "Passager", "latitude": 50, "longitude" : 60 };
如果我已连接,请点击
var information = { "_id" : "ObjectId('5ce262920cb02b4724dbdc0d')", "idProfile" : 1, "mode" : "Passager", "latitude": 500, "longitude" : 60 };
我可能会错过一些非常简单的东西,但找不到。
编辑:当我尝试查询时,他也找不到匹配项
db.UserConnected.updateOne( {"_id": "ObjectId('5ce262920cb02b4724dbdc0d')" }, {$set : {"longitude": 70}} )
{ "acknowledged" : true, "matchedCount" : 0, "modifiedCount" : 0 }
================================================ ==========
我无法回答我不知道为什么的问题……无论如何,这就是解决方案:
将数据作为简单字符串发送到客户端"5ce262920cb02b4724dbdc0d"
然后将其用作过滤器
{"_id" : ObjectID(information._id)}
与
var ObjectID = require('mongodb').ObjectID;