使用新的json对象更新mongodb

时间:2016-01-09 16:16:53

标签: javascript json node.js 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://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”获得控制台,当我再次检查时,我发现它没有做任何事情。

0 个答案:

没有答案