在我sever/publish.js,我有这样的事情:
Questions = new Meteor.Collection("questions");
Meteor.publish("questions", function(){
return Questions.find();
});
Run Code Online (Sandbox Code Playgroud)
在我client/app.js做这样的事情时:
Questions = new Meteor.Collection("questions");
var questionHandle = Meteor.subscribe("questions");
Meteor.methods({
post: function(title){
Questions.insert({title: title});
}
});
$('.save').on('click', function(){
var title = $('input[name="title"]').val();
Meteor.call('post', title);
});
Run Code Online (Sandbox Code Playgroud)
它不起作用!但是,如果我把代码放在自身之外,服务器数据会更新.
Questions = new Meteor.Collection("questions");
var questionHandle = Meteor.subscribe("questions");
$('.save').on('click', function(){
var title = $('input[name="title"]').val();
Questions.insert({title: title});
});
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我错过了什么?
如果要更新真实服务器数据库,则必须在服务器上定义方法.如果您在客户端上定义它,它将首先运行("延迟补偿").
Questions = new Meteor.Collection("questions");
Meteor.methods({
post: function(title){
Questions.insert({title: title});
}
});
if (Meteor.isServer){
Meteor.publish("questions", function(){
return Questions.find();
});
}
if (Meteor.isClient){
var questionHandle = Meteor.subscribe("questions");
$('.save').on('click', function(){
var title = $('input[name="title"]').val();
Meteor.call('post', title);
});
}
Run Code Online (Sandbox Code Playgroud)
您可以看到doc和EventedMind截屏视频.