不能调用方法'然后'未定义的sequelize错误
问题描述:
我在函数内部返回一个promise并且处理函数外的promise,但是我得到的不能在未定义的错误上调用方法'then'。有人可以指出我做错了什么,或者如何解决这个问题。不能调用方法'然后'未定义的sequelize错误
function getMeterReadingByMeterIdandDate(sequelize, Dials, Meter, Server, meter_id, date){
getNameByMeterId(sequelize, Meter, meter_id)
.then(function(meter){
getServerIdByMeterId(sequelize, Server, meter_id)
.then(function(server){
var name = meter[0].meter_id;
var channel = "Ch"+name.substr(-1);
var serialNumber = parseInt(name.substr(0,12));
console.log({name:name,channel:channel,serialNumber:serialNumber});
var server_id = server[0].server_id;
return sequelize.query("select SUM(?) as total from dial?s where RealReadDate <= ? and SN = ?",
{
model:Dials[server_id],
replacements:[channel, server_id, date.toISOString(), serialNumber],
type: sequelize.QueryTypes.SELECT
});
});
});
}
function getStartMeterReadingByMeterIdAndBillingId(sequelize, Dials, Billings, Meter, Server, meter_id, billing_id){
getStartDateByBillingId(sequelize,Billings,billing_id)
.then(function(date){
return getMeterReadingByMeterIdandDate(sequelize, Dials, Meter, Server, meter_id, date[0].start_date);
});
}
getStartMeterReadingByMeterIdAndBillingId(sequelize, Dials, Billings, Meter, Servers, meter.id, billing_id)
.then(function(current_date_result){
meter_obj.current = current_date_result[0].total;
});
当我功能callgetStartMeterReadingByMeterIdAndBillingId
时,我得到不能调用方法'然后'错误。我们是否被允许返回像Sequelize一样的承诺,然后通过使用函数来处理其他地方。
答
getStartMeterReadingByMeterIdAndBillingId
函数不会根据您的代码示例返回承诺。
假设getStartDateByBillingId
返回一个承诺,你应该代码更改为:
function getStartMeterReadingByMeterIdAndBillingId(sequelize, Dials, Billings, Meter, Server, meter_id, billing_id){
return getStartDateByBillingId(sequelize,Billings,billing_id)
.then(function(date){
return getMeterReadingByMeterIdandDate(sequelize, Dials, Meter, Server, meter_id, date[0].start_date);
});
}
,这仍可能得不到你想要的结果,因为getMeterReadingByMeterIdandDate也不会返回任何东西。 – eczajk