gpt4 book ai didi

node.js - 在 Knex.js 中同时使用 req.body 和 SELECT 语句

转载 作者:行者123 更新时间:2023-11-29 13:41:35 24 4
gpt4 key购买 nike

我正在使用 Knex.js、express.js 和 body-parser 设置 Node.js API。

现在我想插入一个,首先使用

request.body(我用 postman atm 做这个)

在二手手上,另一个插入使用选择语句,如下所示。

我已经连续尝试了 2 个 knex.insert,但它只返回第一个。您认为我应该在执行 createQuestionnaire 时仅使用单独的 ALTER TABLE 语句来解决它吗?

 table questionnaire
id,
title, (insert using req.body)
description, (insert using req.body)
created_by_id (fk) (insert using select-statement)


exports.createQuestionnaire = function (req, res) {

// The Code I need to implement

// knex('users').where({
// id: req.session.passport.user
// }).select('id')

//this works fine

knex
.insert(req.body)
.returning('*')
.into('questionnaire')
.then(function (data) {
res.send(data);
})
.catch(function (err) {
console.error(err);
res.set({ 'content-type': 'application/json; charset=utf-8' });
res.end(JSON.stringify({ message: "Failed" }));
});
};

我该如何解决?

最佳答案

如果您需要根据其他查询结果执行查询,您可以链接多个 promise 。

例如

exports.createQuestionnaire = function (req, res) {

knex('users').where({
id: req.session.passport.user
}).select('id').then(rows => {

if (!rows.length) {
throw 'user-not-found'
}

req.body['created_by_id'] = rows[0].id;

knex.insert(req.body) // Dangerous! You should check the required fields before inserting user input to db...
.returning('*')
.into('questionnaire')
.then(function (data) {
res.send(data);
})
.catch(function (err) {
console.error(err);
res.set({ 'content-type': 'application/json; charset=utf-8' });
res.end(JSON.stringify({ message: "Failed" }));
});
});

附言您可以尝试使用 async & await,而不是使用 then & catch,您的代码将更具可读性。

关于node.js - 在 Knex.js 中同时使用 req.body 和 SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com