直接在前端自动更新mongodb的更改,而不使用Node Socket.io和angularjs进行页面刷新

我的问题是,如果我直接在mongodb中手动添加一条消息,如何在活动的UI客户端页面中自动显示而不需要刷新。 我的代码如下。 我的情况是,当新客户端访问页面时,显示mongo中的现有logging,从而保持连接。 但是,如果我直接在mongo里添加一条logging并加载一个新的客户端,那么只有这个logging会有logging,而其他的logging只会在刷新时才会得到。

app.js(服务器端脚本)

mongoose.connect("mongodb://localhost:27017/some"); var mschema=mongoose.Schema({ message: String, time : {type:Date ,default: Date.now} }); io.sockets.on('connection', function (socket) { chatmsg.find({},function(err,docs) { if(err) console.log("errorr"); else socket.emit('old msgs',docs); }) socket.on('message', function(message) { var newmsg=new chatmsg({message : message}); newmsg.save(function(err) { if(err) { console.log("error"); } else io.sockets.emit('new message',message) ; }) }) 

controller.js(客户端脚本)

  var socket=io("http://localhost:3200"); $scope.sendemit=function() { console.log("inside function"+$scope.textchat); socket.emit('message', $scope.textchat); $scope.textchat=""; } socket.on('new message', function (message) { $("#chat").append(message+"<br/>"); } ); socket.on('old msgs',function(docs) { for(var i=0;i<docs.length;i++) { console.log(JSON.stringify(docs[i].message)); $("#chat").append(docs[i].message+"<br/>"); } }) 

的index.html

  <form > <input class="form-control" type="text" ng-model="textchat"> <button class="btn btn-success" ng-click="sendemit()">Send</button> </form> </div> <div class="container-fluid"> <div id="chat"></div> </div> 

你可能想要切换数据库,这个特定的用例有一个。

RethinkDB自动将数据更改推送到应用程序。

有一个叫做second-thought的节点库。 它有一些实用的function,使数据库操作更容易。