gpt4 book ai didi

angularjs - 直接在前端自动更新 mongodb 中的更改,无需使用 Node Socket.io 和 angularjs 刷新页面

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:57 25 4
gpt4 key购买 nike

我的问题是,如果我直接在 mongodb 中手动添加一条消息,如何使其在事件 UI 客户端页面中自动可见而无需刷新。我的代码如下。我的情况是,当新客户端访问页面时,会显示 mongo 中的现有记录,从而保持连接。但是,如果我直接在 mongo 中添加一条记录并加载一个新客户端,则只有该客户端才会有该记录,而其他客户端只有在刷新时才能获取该记录。

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 的 Node 库。它具有一些实用功能,使数据库操作更加容易。

关于angularjs - 直接在前端自动更新 mongodb 中的更改,无需使用 Node Socket.io 和 angularjs 刷新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40449476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com