在我的代码中发生了一些非常奇怪的事情,我将一个值传递给一个函数。但在该函数内部,该值为空,我不明白为什么。我期待得到一个适当的价值,而不是空。字符串值在被调用函数内变为空
里面当我打电话AdwordsService.isKeywordsCampaign我可以看到campaign.customerId的价值定义,是“1624183869”
function validateCampaingKeywords(req){
return function(campaign){
return AdwordsService
.isKeywordsCampaign(campaign.customerId,req.user.googleRefreshToken)
.then((isKeywordsCapaign) =>{
return {revert:!isKeywordsCapaign}
});
}
}
,但是当我检查至极值它validateCampaingKeywords功能在被调用的函数内部,它是未定义的。
export function isKeywordsCampaign(accountId,customerRefreshToken){
let lastWeekDate = new Date();
lastWeekDate.setDate(lastWeekDate.getDate() - 7);
return getCampaingsRawData(accountId,customerRefreshToken,lastWeekDate)
.then(campaignReportToCampaignDataConverter.convert).then((totalSpentValue) => {
return totalSpentValue > 0;
});
}
怪异的一部分,我现在来了。如果我在调用的函数内部并检查参数[0]的值是多少,它会给我正确的值;
这是叫我的控制器内,在这里我只找到特定广告活动和更新的第一个函数。
// Upserts the given Campaign in the DB at the specified ID
export function upsert(req, res) {
if(req.body._id) {
delete req.body._id;
}
return Campaign.findOneAndUpdate({_id: req.params.id}, req.body, {new: true, upsert: true, setDefaultsOnInsert: true, runValidators: true}).exec()
.then(validateCampaingKeywords(req))
.then(respondWithResult(res))
.catch(handleError(res));
}
有谁知道为什么会发生这种情况?
当然很奇怪。唯一有意义的是'accountId'的两个外观不匹配 - 即印刷错误。但似乎并非如此。为了好的措施,尝试重新输入或复制/粘贴。 –