gpt4 book ai didi

javascript - 如何在新的 Meteor Collection 文档中设置服务器上的 created_on 字段?

转载 作者:可可西里 更新时间:2023-11-01 09:32:09 26 4
gpt4 key购买 nike

我正在构建一个按时间顺序显示帖子的聊天室。我目前在“入口”模板的提交事件上在客户端js中设置用户发帖的时间:

Template.entry.events =  {
'submit': function(e){
e.preventDefault();
//console.log(this.userId());
var user = Meteor.user();
var roomName = Session.get('currentRoomName');
Messages.insert({
user: user,
room_name: roomName,
message: $('#message').val(),
created_on: new Date().getTime()
});
$("#message").val('');
}
};

我的问题是,因为这个日期是在客户端上设置的,如果用户更改了他们机器上的时间,它将被记录下来,允许用户在当前对话之前或之后发布。理想情况下,我能够在收到新的聊天条目后更新服务器上的 created_on 时间,以反射(reflect)服务器上的当前 UTC 时间并更正输入的任何值。我仍然希望在客户端上有时间延迟补偿等

我已经阅读了很多关于我的 Meteor 文档,我怀疑我可能会使用 .observe() 来解决这个问题,但我对 Meteor 和 Mongodb 都是新手。观察条目集合中的每个文档会不会很疯狂?是否可以只观察新条目?

我也在使用 auth 分支 - 不确定这是否会有任何不同。

如果聊天室里有很多用户,this non-question可能最终会相关。

很抱歉,如果这是在 Mongo/Meteor 中非常简单的东西,我只是错过了。

最佳答案

最简单的解决方案是使用一种方法,而不是使用 Messages.insert 创建的隐式方法。

在服务器上:

Meteor.methods({
addMessage: function(room_name, message) {
Messages.insert({
userId: this.userId,
room_name: room_name,
message: message,
created_on: new Date().getTime();
});
});
});

在客户端:

Template.entry.events =  {
'submit': function(e) {
e.preventDefault();
Meteor.call('addMessage', Session.get('currentRoomName'), $('#message').val());
}
}

这将立即在客户端创建一条记录(带有客户端的日期),同时在服务器上创建一条记录(带有服务器的日期),然后在下次同步时覆盖客户端的记录。

关于javascript - 如何在新的 Meteor Collection 文档中设置服务器上的 created_on 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12040831/

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