我在websocket nodeJS应用程序中使用mongodb。目前我只有一个客户端,它不断发送数据。我得到随机重复的密钥(_id)错误。这些错误很奇怪,因为它们出现了,而插入了下一个元素,实际存储了带有重复键的元素。 (虽然只发送一次元素)
以下是该实现的代码段:
var server = ws.createServer(function (conn) {
conn.on("text", function (str) {
data = JSON.parse(str);
MongoClient.connect(url, function(err, client) {
if (err) throw err;
var db = client.db('locator')
db.collection('locations').insertOne(data, function(err, res) {
client.close();
});
});
};
})
conn.on("close", function (code, reason) {
console.log("Connection closed")
})
}).listen(8001);
我已经检查过_id是否是唯一的。重复的id错误说,它无法存储,例如_id 7而websocket实际上接收了下一个元素,并且已经存储了带有_id的元素。我认为这个问题可能与异步匿名函数有关,但我不太确定,如果这是问题,我也不知道如何解决这个问题。
编辑以下是一些示例数据:
{
'_id': 7,
'dataId': 7,
'timestamp': 152731785.8186,
'causeOfTransport': "",
'location': {
'pos': {
'long': 0,
'lat': 0,
'altitude': 0
},
},
'connection': {
'qualitiy': 0,
'speed': 0
},
'device': {
'software': "v0.0.1"
}
}