【发布时间】:2017-03-28 03:55:47
【问题描述】:
当前工作代码: 第一个连接查询使用表单中填写的信息向数据库添加一个新用户,for 循环中的第二个连接查询是否已经存在兴趣,使用在创建新名称之前给定名称。缺少的部分是重要的部分。
问题:如果既没有创建用户也没有创建兴趣,我如何链接添加到数据库的新兴趣或现有兴趣。我明白我需要在链接它们之前运行下面的两个查询以确保它们存在,但是我怎样才能获得新用户或新兴趣的 ID?这一切都发生在注册表单的发布请求中。
connection.query('INSERT INTO User set ? ', [newUserData], function (err) {
if (err) { throw err; }
res.redirect('/');
});
let interests = {
userInterests: req.body.signupNewTagInterests.split(",")
}
for (let i = 0; i < interests.userInterests.length; i++) {
connection.query('SELECT title FROM Interest WHERE title =?', [interests.userInterests[i]], function (err, results) {
if (err) { throw err; }
if (typeof results[0] === 'undefined') {
connection.query('INSERT INTO Interest (title) Value(?) ', [interests.userInterests[i]], function (err) {
if (err) { throw err; }
});
}
});
}
标签:
用户:
身份证
名字
等等...
兴趣:
身份证
标题
用户兴趣:
用户 ID
Interest_ID
【问题讨论】:
-
可能的想法是查询您的表,获取最后一个返回 id,然后递增 1,然后您就得到了 ID?
-
是的,但是如果有多个人在那里创建帐户怎么办?这不会有问题吗?如果我因为他的速度快了 0.1 秒而得到了别人的 ID 怎么办?
-
无论以何种方式实现它都是正确的,为什么您需要在创建之前知道 id 与创建之后/之后/之后?
-
老实说,如果最后一个查询发生在创建部分之后,那不会有问题吧?我的意思是用户已经存在但速度非常快。
-
您必须在单个
transaction中执行所有操作,只需在数据库中创建一个包含所有步骤的存储过程/函数。
标签: javascript mysql node.js express