在Meteor.method调用中插入后检索_id
我需要在插入文档后检索_id 在客户端:在Meteor.method调用中插入后检索_id,meteor,Meteor,我需要在插入文档后检索_id 在客户端: Meteor.call('saveDocument', value1, value2); 服务器中 saveDocument: function (value1, value2) { MyCollection.insert({ 'value1': value1, 'value2': value2}); } 我尝试过在服务器端使用insert的回调函数。通过这种方式,我可以获取文档的_id,但在回调函数中,这无法返回到客户端调用: saveDo
Meteor.call('saveDocument', value1, value2);
服务器中
saveDocument: function (value1, value2) {
MyCollection.insert({ 'value1': value1, 'value2': value2});
}
我尝试过在服务器端使用insert的回调函数。通过这种方式,我可以获取文档的_id,但在回调函数中,这无法返回到客户端调用:
saveDocument: function (value1, value2) {
MyCollection.insert({ 'value1': value1, 'valu2': value2},
function(err, docsInserted){ console.log(docsInserted) });
//Works, but docsInserted can't return to the client.
}
您的客户端调用应该使用异步样式-来自文档 在客户机上,如果不传递回调且不在存根中,则调用将返回undefined,并且无法获取方法的返回值 然后您只需从该方法返回id
saveDocument: function (value1, value2) {
return MyCollection.insert({ 'value1': value1, 'valu2': value2});
}
为了更好地衡量,请对文档的这两个部分进行一次检查
当我遇到同样的问题时发现了这个问题,得到了这个解决方案 在客户端使用.insert(),它可以很好地处理回调。大概是这样的:
Collection.insert({
something: something //insert to Mongo
}, (error, response) => {
console.log(error, result //get the response
)});
我必须这样编写它才能工作:
saveDocument:function(value1,value2){var newDoc=MyCollection.insert({'value1':value1,'value2':value2});return newDoc;}
Collection.insert({
something: something //insert to Mongo
}, (error, response) => {
console.log(error, result //get the response
)});