Je dois récupérer le _id après avoir inséré un document.
Chez le client:
Meteor.call('saveDocument', value1, value2);
En serveur
saveDocument: function (value1, value2) {
MyCollection.insert({ 'value1': value1, 'value2': value2});
}
J'ai essayé avec la fonction de rappel de l'insertion du côté serveur. De cette façon, je peux obtenir le _id du document, mais à l'intérieur de la fonction de rappel et cela ne peut pas retourner à l'appel du client:
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.
}
votre appel client doit utiliser le style asynchrone - à partir de la documentation
Sur le client, si vous ne passez pas de rappel et que vous n'êtes pas dans un stub, call retournera undefined et vous ne pourrez pas obtenir la valeur de retour de la méthode.
Meteor.call('saveDocument', value1, value2, function(error, result){
var theIdYouWant = result;
});
alors vous retournez juste l'id de la méthode
saveDocument: function (value1, value2) {
return MyCollection.insert({ 'value1': value1, 'valu2': value2});
}
pour faire bonne mesure, donnez une fois à ces 2 sections de la documentation
a trouvé cette question lorsque j'ai eu le même problème, a obtenu cette solution , utilisez .insert () du côté client et cela fonctionne bien avec le rappel. Quelque chose comme ça:
Collection.insert({
something: something //insert to Mongo
}, (error, response) => {
console.log(error, result //get the response
)});