Javascript MeteorJS中的存根方法是什么?

Javascript MeteorJS中的存根方法是什么?,javascript,meteor,Javascript,Meteor,MeteorJS中的存根方法是什么 为什么包含数据库调用会使其成为非存根?谢谢 我想你指的是合同中提到的那些?存根是通过Meteor.methods定义的存根 在Meteor中,这些存根允许您进行延迟补偿。这意味着,当您使用Meteor.call调用其中一个存根时,服务器可能需要一些时间才能使用存根的返回值进行响应。当您在客户端定义存根时,它允许您在客户端执行一些操作,以模拟延迟补偿 也就是说,我可以 var MyCollection = new Meteor.collection("mycol

MeteorJS中的存根方法是什么


为什么包含数据库调用会使其成为非存根?谢谢

我想你指的是合同中提到的那些?存根是通过Meteor.methods定义的存根

在Meteor中,这些存根允许您进行延迟补偿。这意味着,当您使用Meteor.call调用其中一个存根时,服务器可能需要一些时间才能使用存根的返回值进行响应。当您在客户端定义存根时,它允许您在客户端执行一些操作,以模拟延迟补偿

也就是说,我可以

var MyCollection = new Meteor.collection("mycoll")
if(Meteor.isClient) {
    Meteor.methods({
        test:function() {
            console.log(this.isSimulation) //Will be true
            MyCollection.insert({test:true});
        }
    });
}

if(Meteor.isServer) {
    Meteor.methods({
        test:function() {
            MyCollection.insert({test:true});
        }
    });
}
因此,文档将同时插入到客户端和服务器上。客户端上的一个将“立即”反映出来,即使服务器没有回复是否已插入

客户端存根允许在不插入两个文档的情况下执行此操作,即使insert运行了两次


如果插入失败,服务器端一方获胜,服务器响应后,客户端一方将自动删除。

对于上述代码,您可以编写此代码并在服务器和客户端上运行,如果需要执行特定任务,请使用模拟来确定您在哪一方:

var MyCollection = new Meteor.collection("mycoll")
Meteor.methods({
    test:function() {
        console.log(this.isSimulation) //Will be true on client and false on server
        var colItem = {test:true, server: true};
        if (this.isSimulation) {
            colItem.server = false;
        }
        MyCollection.insert(colItem);
    }
});
您知道一般软件开发意义上的“存根”是什么吗?