【问题标题】:Meteor: When the client insert a document, how does the server and client generates the same _id?Meteor:客户端插入文档时,服务端和客户端如何生成相同的_id?
【发布时间】:2017-07-17 18:39:33
【问题描述】:
import {Mongo} from 'meteor/mongo';


export const play = new Mongo.Collection('play');

Meteor.methods({
    'play.insert':(value)=>{
        let doc_id = play.insert({value});
        console.log(doc_id);
    }
});

调用此方法时,客户端和服务器端的 doc_id 相同。 这怎么可能?服务器如何知道客户端使用的是什么_id? 因为在服务端调用play.insert({value})时,{value}没有_id,那么服务端如何“知道”使用哪个id呢?

【问题讨论】:

  • 据我所知,它会将客户端上的相同记录同步到服务器。我们不需要处理 _id,因为生成的 id 几乎是唯一的,并且几乎不可能更改为与服务器中的记录发生冲突。

标签: meteor


【解决方案1】:

根据官方 Meteor 指南

每个 Meteor 方法调用与调用该方法的客户端共享一个随机生成器种子,因此客户端和服务器方法生成的任何 ID 都保证是相同的。这意味着您可以在将方法发送到服务器时安全地使用客户端上生成的 ID 来执行操作,并确信在方法完成时 ID 将是相同的。这特别有用的一种情况是,如果您想在数据库中创建一个新文档,然后立即重定向到包含该新文档 ID 的 URL。

如果您想了解更多信息,可以查看 Meteor 指南的this 部分。

【讨论】:

  • 哇,这正是我所需要的。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-18
  • 2012-05-19
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
相关资源
最近更新 更多