Любые вызовы вне текущей среды Meteor (например, в функциях обратного вызова или обработчиках промежуточного программного обеспечения) к конструкции, для которой требуется среда Meteor, должны быть связаны с использованием среды Meteor.
В вашем случае это кажется быть updateCampaign
, потому что он вызывает Meteor-Mon go Collection:
const updateCampaign = Meteor.bindEnvironment(function () {
const updated = Campaign.update({_id: "BAxBhk4ae3AdHxxEQ"}, {$set: {chargeTrx: "chargeID", amount: "333"}});
const callResult = Meteor.call("updateCampaignForPayment", campaignID, chargeAmount, chargeID);
})
Обратите внимание, что коллекция внутри этой функции выполняется в асинхронном c режиме и только внутри Код среды Meteor, вы можете написать код в формате syn c и позволить ему обрабатывать asyn c. Вы всегда можете «дождаться» результата, используя async/await
:
function async updateCampaign(){
const updated = await Campaign.update({_id: "BAxBhk4ae3AdHxxEQ"}, {$set: {chargeTrx: "chargeID", amount: "333"}});
//This didn't run either but would run outside of this function
const callResult = await Meteor.call("updateCampaignForPayment", campaignID, chargeAmount, chargeID);
}
или Promise.await
, если вы хотите избежать async/await
:
function updateCampaign(){
const updated = Promise.await(Campaign.update({_id: "BAxBhk4ae3AdHxxEQ"}, {$set: {chargeTrx: "chargeID", amount: "333"}}))
//This didn't run either but would run outside of this function
const callResult = Promise.await(Meteor.call("updateCampaignForPayment", campaignID, chargeAmount, chargeID))
}
Readings :
https://guide.meteor.com/using-npm-packages.html#bind -среда
https://docs.meteor.com/api/methods.html#Meteor -вызов
https://guide.meteor.com/using-npm-packages.html#promises
https://github.com/meteor/meteor/tree/devel/packages/promise