如果续集正确更新,我正尝试将结果返回给我的控制器。它在当前代码中有效,但是无论失败还是有效,我只能返回true。
我尝试了几种我认为可行的方法,但是除非我硬编码“ return true”,否则一切都将在控制器中返回未定义的
控制器
const {promisify} = require('util');
const pageSection = promisify(db.pageSection);
exports.updateForm = async function (req, res) {
let result;
try {
result = await pageSection.updateSection(req);
} catch (err) {
console.log('** NOT GOOD **', err);
}
return res.send(result);
}
模型
pageSection.updateSection = function (req) {
var result;
pageSection.update ({
title: req.body.title,
description: req.body.description,
icon: req.body.icon
}, {
where: {
id: req.body.id
}
})
.then( updatedRow => {
return updatedRow; //Undefined in controller
sendResult( updatedRow ); //Still undefined
result = updatedRow; // Still undefined
})
.catch(err => {
console.log('Page Model Error: ', err);
})
function sendResult ( updatedRow ) {
if ( updatedRow ) { return true }
} //Returns undefined
return true; //Only thing that works
return result; //Undefined
}
答案 0 :(得分:0)
(如果使用的是postgres),则需要添加
returning: true,
plain: true
紧接where子句之后的查询,以便实际返回更新的数据行,设置plain:true
可确保返回的是普通对象。
所以现在它将变成:
pageSection.update ({
title: req.body.title,
description: req.body.description,
icon: req.body.icon
}, {
where: {
id: req.body.id
},
returning: true,
plain: true
})
返回的结果是一个数组,因此您需要访问返回的数组的第二个元素以获取更新的行。