#javascript #mysql #arrays #reactjs #post
#javascript #mysql #массивы #reactjs #Публикация
Вопрос:
Я пытаюсь отправить массив объектов на сервер узла по протоколу https, который разместит их в таблице mysql, причина в том, что мне нужно вставить несколько строк. Из того, что я прочитал, я должен использовать вложенный массив. Но я не уверен, как обработать его после отправки на сервер узла. Ниже то, с чем я работаю:
Массив
menuItems: [
{
"id": 1234,
"item_name": 'meal',
"price": 6
},
{
"id": 1235,
"item_name": 'drink',
"price": 6
}
],
Функция отправки
sendMenuItems = (id, item_name, price) => {
//translate array of objects to array of arrays
const output = this.state.menuItems.map(function(obj) {
return Object.keys(obj).sort().map(function(key) {
return obj[key];
});
});
fetch(
//HOW DO I FIT OUTPUT INTO MY POST REQUEST?
`${x}/addMenuItem?id=${id}amp;item_name=${item_nameamp;price=${price}`,
{ method: "POST" }
).catch((error) => {
console.log(error)
})
}
Сервер узлов
app.post('/addMenuItem', cors(), (req, res) => {
var values = {
id: req.query.id,
item_name: req.query.item_name,
price: req.query.price
}
let sql = 'INSERT INTO db.menu(id,item_name,price) VALUES ?';
// now the createStudent is an object you can use in your database insert logic.
pool.query(sql, values, function (err, results) {
if(err) {
console.log(err)
return res.send(err)
} else {
return res.status(HttpStatus.OK).json({ message: 'ok', status: HttpStatus.OK })
}
});
});
Комментарии:
1. Похоже
output
, что переменная просто выбрасывается и не отправляется на сервер. Вы не включили это в запрос POST. Вам решать, как определить API addMenuItem, но один из вариантов — сделать пункты меню телом запроса. expressjs.com/en/api.html#req.body