Я хотел сделать запрос к базе данных mysql, если имя пользователя уже существует, он должен бросить мне сообщение, а если нет, показать мне новый идентификатор. Я хотел проверить, является ли результат 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, но оно показало "Ошибка имени пользователя не определена" ...