На данный момент у меня есть 2 вопроса. Во-первых, я хотел бы знать, как вставлять другие данные в таблицу ma по одному запросу,
app.post('/api/domain/:id/translation.json', function (req, res) {
var domain_id = req.params.id;
ADD this// Insert INTO translation_to_lang ('lang_id' which mean result.insertID, 'value') VALUES ("' + req.body.lang_id + '", "' + req.body.value + '");
connection.query("INSERT INTO translation ('key', 'domain_id') VALUES ('" + req.body.key + "', '" + domain_id +"');", function(error, result) {
if (error) throw(error);
var domain_id = result[0];
if (domain_id !== undefined) {
setTimeout(function () {
res.status(400);
res.send({
code: 400,
message: 'Bad Request'
});
}, 1000);
}
console.log(result);
connection.query('SELECT * FROM translation WHERE id = "' + result.insertId + '"', function(error, data_insert) {
setTimeout(function () {
res.send({
code: 201,
message: 'success',
datas: data_insert
});
}, 1000);
});
});
});
И у меня есть ошибка, когда я пытаюсь отправить данные из domain_id, который не существует, если попробовать выполнить условие, например '/api/domain/44/translation.json', в моем bdd в домене нет 44 идентификатора строка Я просто хотел бы, чем мой api res отправить статус 400 плохой запрос, но мое условие не работает, и у меня есть это сообщение об ошибке:
ER_NO_REFERENCED_ROW_2: невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа завершается с ошибкой (
restapi
.translation
, CONSTRAINTtranslation_ibfk_1
FOREIGN KEY (domain_id
)domain_id
ЛИТЕРАТУРЫdomain
(id
))
Это только от поста, чем есть проблема, но если вы хотите, чтобы все сказали мне.
инструкция insert не работает, потому что этот внешний ключ должен существовать в связанной таблице, что вызывает ошибку.
Таким образом, ваш чек на результат [0] не имеет значения. Вам нужно проверить свою ошибку. И, как упоминалось в комментариях, вы можете также рассмотреть mysql.format для SQL Injection, например
var query = mysql.format("SELECT * FROM translation WHERE id = ?;", tId);
попробуйте использовать свой код, например
app.post('/api/domain/:id/translation.json', function(req, res) {
var insertQuery = mysql.format("INSERT INTO translation ('key', 'domain_id') VALUES (?,?);", [req.body.key, domain_id]);
connection.query(insertQuery, function(error, result) {
if (error) {
// check for constraint error
return res.status(400).send({
code: 400,
message: 'Bad Request'
});
}
console.log(result);
var selectQuery = mysql.format("SELECT * FROM translation WHERE id = ?;", result[0].insertId);
connection.query(selectQuery, function(error, data_insert) {
return res.send({
code: 201,
message: 'success',
datas: data_insert
});
});
});});