Javascript 在回调中调用时,Insert未被调用,这是为什么?
当我将insert移到s3.putObject之后时,这段代码可以工作,但是当我将它放在回调中时,它似乎可以工作,但是没有向数据库添加任何内容,也没有在网页上更新任何内容Javascript 在回调中调用时,Insert未被调用,这是为什么?,javascript,callback,meteor,Javascript,Callback,Meteor,当我将insert移到s3.putObject之后时,这段代码可以工作,但是当我将它放在回调中时,它似乎可以工作,但是没有向数据库添加任何内容,也没有在网页上更新任何内容 Meteor.methods({ createPost: function(options){ // check(options,{ var id = Random.id(); var data = { Key: id, Body: 'H
Meteor.methods({
createPost: function(options){
// check(options,{
var id = Random.id();
var data = { Key: id, Body: 'Hello!'};
if(Meteor.isServer){
s3.putObject(data, function(err, data) {
if (err) {
console.log("Error uploading data: ", err);
} else {
console.log("Successfully uploaded data to s3.");
if(options.title.length > 200){
throw new Meteor.Error(413,"Title too long");
}
//if(!this.userId){
//throw new Meteor.Error(403, "You must be logged in");
//}
console.log("test")
var id = options._id || Random.id();
console.log(Posts.findOne());
Posts.insert({
_id: id,
owner: "test",
lat: options.lat,
lon: options.lon,
title: options.title,
public: !!options.public,
upvotes: 1,
downvotes: 0,
rank: 0
});
}
});
}
// });
}
});
我需要绑定到我的环境,因为一切都必须在光纤中执行
Meteor.methods({
createPost: function(options){
// check(options,{
var id = Random.id();
var data = { Key: id, Body: 'Hello!'};
if(Meteor.isServer){
s3.putObject(data, Meteor.bindEnvironment(function(err, data) {
if (err) {
console.log("Error uploading data: ", err);
} else {
console.log("Successfully uploaded data to s3.");
if(options.title.length > 200){
throw new Meteor.Error(413,"Title too long");
}
//if(!this.userId){
//throw new Meteor.Error(403, "You must be logged in");
//}
console.log("test")
var id = options._id || Random.id();
console.log(Posts);
var ret = Posts.insert({
_id: id,
owner: "test",
lat: options.lat,
lon: options.lon,
title: options.title,
public: !!options.public,
upvotes: 1,
downvotes: 0,
rank: 0
}, function(error, results){
console.log(error)
});
console.log("test2");
}
},function () { console.log('Failed to bind environment'); }));
}
// });
}
});
我假设
Posts.insert
是异步的。它应该有一个回调参数。在该回调中,您可以检查帖子是否已成功添加,然后从createPost
返回。在这种情况下,它是同步的。createPost是同步的吗?我相信createPost也是同步的。