我正在尝试基于回调结果执行SQL查询,如果条件但我无法编写代码。那么有人可以提供一些有关如何使用异步/回调方法执行此操作的信息吗?
app.get('/resell-property', function(req, res) {
var data = {}
data.unit_price_id = 1;
function callback(error, result) {
if (result.count == 0) {
return hp_property_sell_request.create(data)
} else if (result.count > 0) {
return hp_unit_price.findAll({
where: {
unit_price_id: data.unit_price_id,
hp_property_id: data.property_id,
hp_unit_details_id: data.unit_details_id
}
})
}
}
hp_property_sell_request.findAndCountAll({
where: {
unit_price_id: data.unit_price_id
}
}).then(function (result) {
if (result) {
callback(null, result);
}
});
});
如何为此编写回调?
hp_property_sell_request.create(data) ,hp_unit_price.findAll({
where: {
unit_price_id: data.unit_price_id,
hp_property_id: data.property_id,
hp_unit_details_id: data.unit_details_id
}
})
返回结果后,我想处理回调并执行此查询:
if (result.request_id) {
return hp_unit_price.findAll({
where: {
unit_price_id:result.unit_price_id,
hp_property_id:result.property_id,
hp_unit_details_id:result.unit_details_id
}
}).then(function(result) {
if (result.is_resale_unit==0 && result.sold_out==0) {
return Sequelize.query('UPDATE hp_unit_price SET resale_unit_status=1 WHERE hp_unit_details_id='+result.unit_details_id+' and hp_property_id='+result.property_id)
}
})
}
答案 0 :(得分:0)
你的问题太模糊了,无法准确回答。我假设你需要调用两个方法,后者应该在第一个方法完成后调用,你需要第二个方法中第一个方法的结果。
现在,到解决方案
请注意,回调和承诺是非常不同的方法。坚持只有一个而不是混合回调和承诺是非常明智的。 根据您的要求,我强烈建议您避免承诺 callback hell.
使用回调,解决方案看起来像
app.get('/resell-property', function(req, res) {
method1(req.body.id,function(err,result){
return method2(result);
})
function method1(input1,callback(err,result)){
try{
var result=st.execute("query");
return callback(null,result)
}catch(error){
return callback(error,null);
}
}
function method2(input2){
return input2;
}
})