我無法獲得插入的_id的返回值,使用我在這裏找到的相同問題的答案;在Meteor.method調用插入後無法檢索_id
Meteor.call('saveDocument', value1, value2, function(error, result){
var theIdYouWant = result;
});
和在服務器上;
saveDocument: function (value1, value2) {
return MyCollection.insert({ 'value1': value1, 'valu2': value2});
}
答案是從2013年5月,所以我不知道這是不孤獨的人以正確的方式錯誤,結果總是不確定的。不過,我可以通過將其保存在服務器上來實現它的功能;
'transactionInsert': function(currentUserId, trx_num, other_stuff){
trxId = trx.insert ({
"userID": currentUserId,
"trx_num": trx_num,
... other stuff ...
});
},
'insertInvoiceItem': function(currentUserId, invoiceNum){
invoiceItems.insert(
{"userID": currentUserId,
"invoice_num": invoiceNum,
"trx_id": trxId}
);
}
從客戶insertInvoiceItem
是transactionInsert
後立即調用。我的問題是trxId
始終是交易的正確標識,即使數以千計的用戶正在使用此或可以另一個用戶交易導致id不正確?
更新:
我錯了,仍然沒有工作。這是我現在的地方;
Meteor.call('transactionInsert', Meteor.userId(), trx_num,
function(error, result){
console.log(Session.get("trxId")); // p2YrLTiypiMm4tKma appears AFTER undefined in the console
Session.set("trxId",result);
});
console.log("trxId is " + Session.get("trxId")); // undefined
Meteor.call('insertInvoiceItem', Meteor.userId(), invoiceNum, Session.get("trxId")
Template.writeInvoice.helpers({
trxId: function() {
return Session.get("trxId");
}
})
在服務器上;
Meteor.methods({
'transactionInsert': function(currentUserId, trx_num){
return trx.insert ({
"userID": currentUserId,
"trx_num": trx_num
})
},
'insertInvoiceItem': function(currentUserId, invoiceNum, trxId){
invoiceItems.insert(
{"userID": currentUserId,
"invoice_num": invoiceNum,
"trx_id": trxId}
)
}
})
您的原始代碼看起來還好我。如果你在回調中的** console.log(result)** **會發生什麼?我懷疑你遇到的問題是'theIdYouWant'沒有被定義**在回調的外部**。這是預料之中的,因爲它是一個異步功能。看[this](https://www.discovermeteor.com/patterns/5828387)的例子。 – 2014-12-07 15:23:57
奇怪。該值顯示在控制檯中,而變量保持未定義狀態。所以如果我在模板中使用'theYdYouWant',那麼它應該工作?將它定義爲服務器上的全局變量有什麼不妥,就像我現在正在做的那樣? – 2014-12-07 15:41:19