我有一个基于nodejs的api服务器,并使用knex npm软件包将其连接到MySQL数据库,以进行数据库(CRUD)操作,并表示对req和res的处理,
想象我有一个控制器文件,它正在插入数据库:
在此文件中,我将home_name作为req.body并生成新ID并将其插入数据库:
../ controller / home.controller.js
var idGenerator = require('../utils/idGenerator');
var home = {
id: idGenerator.generateID(),
name: req.body.name
};
和generateID
是导出的函数,它检查数据库中最后生成的ID,如果有,则+1,然后返回,否则生成新的随机ID。
../ utils / idGenerator.js
function generateID() {
knex('home').select("max(id)" as lastID)
.then((lastID) => {
if (lastID) {
return parseInt(lastID) + 1;
} else {
//Generate new ID and return
}
})
}
module.exports.generateID = generateID
id: idGenerator.generateID
未定义
如何解决此问题?
答案 0 :(得分:1)
所以这是一个异步问题。问题是您的this.label = checkConditionsAndGetTooltipLabel();
函数在进行数据库调用时是异步的。在处理之前,您无需等待控制器发出的异步信号。您可以这样做:
generateID()