Knex.js 不正确的整数值:第 1 行第 'user_id' 列的“[object Object]”

Knex.js Incorrect integer value: '[object Object]' for column 'user_id' at row 1

我目前正在使用 express 开发一个项目,我正在使用 knex.js 来处理迁移和查询。

我仍在努力掌握承诺的概念,以及如何使用 knex 运行 进行多个查询。

我有以下代码:

this.addUnit = function(unit_prefixV, unit_nameV, unit_descriptionV, profile_id) {
    return knex.insert({ 'unit_prefix':unit_prefixV, 'unit_name':unit_nameV, 'unit_description':unit_descriptionV }).into('units')
    .then(function(unit) {
        return knex('users').where({ 'google_id':profile_id }).select('id')
        .then(function(uid) {
            return knex.insert({ 'unit_id':unit, 'user_id':uid }).into('users_units');
        });
    });
}

但是我返回时出现以下错误:

Unhandled rejection Error: ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect integer value: '[object Object]' for column 'user_id' at row 1

在我的 routes 文件中,我有以下 post 方法:

app.post('/dashboard/unit/add', ensureAuthenticated, function(req, res) {
        let postErrors = []
        if (req.body.unit_name.trim() == "") {
            postErrors.push('Unit name cannot be empty.')
        }

        if (req.body.unit_prefix.trim() == "") {
            postErrors.push('Unit prefix cannot be empty.')
        }

        if (req.body.unit_description.trim() == "") {
            postErrors.push('Unit description cannot be empty.')
        }

        if (postErrors.length > 0) {
            res.render('addUnit', { errors: postErrors, user: req.user })
        } else {
            unitModel.addUnit(req.body.unit_prefix.trim(), req.body.unit_name.trim(), req.body.unit_description.trim(), req.session.passport.user.id).then(function(unit) {
                res.redirect('/dashboard')
            })
        }
    })

作为参考,我的用户 table 包括:

我的 users_units table 包括:

我做错了什么?

unit 是一个对象,您必须访问属性 (unit_id) - 根据您的数据库,您可能还需要做一些特殊的事情来获得结果插入对象(而不是只是行数)。您收到的错误是因为 knex select 解析了一个数组。您可以执行 first 或访问数组的第一个元素。