我正在使用knexjs,我想从一个表中获取数据并使其分支到另一个表中(idk如何很好地解释它),例如我有这些数据库
用户
id | name | email | stories |
1 | lala | lala@gmail | 1 |
故事
id | entries | title | description |
1 | 1 | haha | foo |
因此故事和条目是匹配的,每次添加新故事时,它都与条目相同,例如:
用户
id | name | email | stories |
1 | lala | lala@gmail | 2 |
故事
id | entries | title | description |
1 | 1 | haha | foo |
2 | 2 | booo | hoo |
我试图做到这些
app.post('/new-story', (req, res) => {
const { title, category, description, mature, id} = req.body;
const stories = db.select('stories').from('users');
db.transaction( trx => {
trx.insert({
stories: stories
})
.into('users')
.returning('stories')
.then( entriesBook => {
return trx('story')
.returning('*')
.insert({
entries: entriesBook[0],
title: title,
category: category,
description: description,
mature: mature
})
.then( story => {
res.json(story[0]);
})
})
.then( trx.commit)
.catch( trx.rollback)
})
.catch( err => res.status(400).json('unable to create story'))
})
有人知道更好的方法来解决这些问题吗?
答案 0 :(得分:0)
原则上,您的代码应该或多或少地执行您想做的事情。您正在以正确的方式使用事务,因此只需要调试代码并查找错误。
至少这看起来可疑:
const stories = db.select('stories').from('users');
...
trx.insert({
stories: stories
})
在SQL中,它看起来像(没有检查将输出什么):
insert into table (stories) values (select "stories" from users);