我试图使用我从浏览器获得的新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://thefilipinoexpat.com/wp-content/uploads/2015/11/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);
});
正如你在我的socket中看到的那样使用:“on('EditMessage')”当服务器发生这种情况时激活函数:“updateMessage”获取更新,这是一个json对象就像存储在其中的其他对象一样MongoDB的。 我的更新应该找到消息的名称(每条消息都是uniq)并更新消息。 当我这样做时,我从unifined和消息“UPDATE SUCCESS”获得控制台,当我再次检查时,我发现它没有做任何事情。