【发布时间】:2020-06-02 11:28:09
【问题描述】:
如果用户名已经存在,我想查询 mysql 数据库,他应该给我一条消息,如果不存在,请告诉我新的 id。我想检查查询 result.lenght 是否高于 0。 但是它会抛出错误“无法读取未定义的属性'长度'”
服务文件
const connect = () =>
mysql.createConnection({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE
});
const insert = (conn, user) => {
return conn.query(`insert into user(username, firstName, lastName, password)
values(?,?,?,?)`,
[
user.username,
user.firstName,
user.lastName,
user.password
]
)
}
const getByUsername = username => {
return connect()
.then(conn => {
conn.query(
`select id, username, firstName, lastName
from user
where username = ?`,
[username]
);
})
}
const create = user => {
return getByUsername(user.username)
.then(result => {
if (result.length > 0) {
throw new Error(`User "${user.username}" already exists`);
}
})
.then(() => connect())
.then(conn => insert(conn, user))
.then(result =>
({
id: result.insertId
}));
};
控制器文件
const create = (req, res) => {
userService.create(req.body)
.then(result => {
res.status(200);
res.json(result);
})
.catch(err => {
res.status(500);
res.send('Error ' + err.message);
})
}
我试图定义长度,但我认为这不是问题。我使用邮递员进行查询,并使用 mysql 作为数据库。我也尝试将 result.length 替换为 username.length 但它会出现“未定义错误用户名”...
【问题讨论】:
-
你的 npm mysql 版本是多少?
-
我得到了 2.18.1 版本
标签: mysql sql node.js express postman