调用外部函数时遇到问题

时间:2018-12-18 13:11:45

标签: node.js express knex.js

我有一个基于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未定义

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

所以这是一个异步问题。问题是您的this.label = checkConditionsAndGetTooltipLabel();函数在进行数据库调用时是异步的。在处理之前,您无需等待控制器发出的异步信号。您可以这样做:

generateID()