2013-05-08 10 views
23

Bir belge ekledikten sonra _id dosyasını geri almam gerekiyor. istemcisiBir Meteor.method çağrısına ekledikten sonra _id'i geri al

:

Meteor.call('saveDocument', value1, value2); 

server

saveDocument: function (value1, value2) { 
    MyCollection.insert({ 'value1': value1, 'value2': value2}); 
} 

sunucu tarafındaki gömme parçanın geri arama fonksiyonu ile çalıştık. Bu şekilde ben ancak geri arama işlevi içinde, belgenin _ID alabilir ve bu müşteri aramaya dönmek edemez:

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. 
} 

cevap

37

zaman uyumsuz stili kullanmalıdır istemci çağrısı - dokümanlardan

İstemcide, bir geri arama iletmezseniz ve bir saplama içinde değilseniz, çağrı tanımsız olarak dönecektir ve yöntemin dönüş değerini elde etmenin hiçbir yolu yoktur.

Meteor.call('saveDocument', value1, value2, function(error, result){ 
    var theIdYouWant = result; 
}); 

o zaman sadece vermek iyi ölçmek için yöntemin

saveDocument: function (value1, value2) { 
    return MyCollection.insert({ 'value1': value1, 'valu2': value2}); 
} 

gelen kimliği dönünce dokümanlar bu 2 bölümlere üzerinde

http://docs.meteor.com/#meteor_call

http://docs.meteor.com/#insert

+3

Ben w vardı Çalışmak için bunu şöyle söyleyin: 'saveDocument: function (value1, value2) { var newDoc = MyCollection.insert ({'value1': value1, 'valu2': value2}); newDoc döndürün; } ' – eloone

+1

Mükemmel, teşekkürler. Harika bir açıklama. – Andy

İlgili konular