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});
}
});
}
因此文档将同时插入客户端和服务器。即使服务器没有回复它是否已插入,客户端上的那个也会“立即”反映。
即使插入运行两次,客户端存根也允许在没有插入两个文档的情况下发生这种情况。
如果插入失败,则服务器端获胜,服务器响应后,客户端将自动删除。
对于上面的代码,您可以编写将在服务器和客户端上运行的代码,如果您需要执行特定任务,请使用 isSimulation 来识别您所在的位置:
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);
}
});