Прежде всего, я должен сказать вам, что я довольно нуб в этой "вселенной".Я использую: ExpressJs, MySql, Body-Parser, Express-session, Ejs шаблон для создания приложения базовых контактов в Node.
Моя база данных состоит из 3 таблиц:
- user (user_id, имя, имя, пароль)
- контакты (ct_id, имя, имя, номер телефона)
- user_contacts (user_id, ct_id) -> внешние ключидля пользователя и контактов
Я хочу разместить на странице / myProfile все подробности о пользователе и его контактах.Я не знаю, как обрабатывать запросы выбора.
Итак, после некоторой документации я сделал это:
conn.query('SELECT * FROM user_contacts WHERE user_id= ?', req.session.user_id, function (err, result) {
if(err) throw err;
console.log(result);
var queryArray = "";
for(var i = 0; i < result.length; i++){
queryArray += `SELECT * FROM contacts WHERE ct_id= ${result[i].ct_id}; `;
}
console.log(queryArray);
conn.query(queryArray, function (err, result) {
if(err) throw err;
console.log(result);
res.render('myProfile/contacts', {
title: `${req.session.user_nickname}'s Contacts`,
data: result
});
});
});
Но у меня есть ошибка
ER_PARSE_ERROR: у вас есть ошибка в синтаксисе SQL;
.. когда queryArray.length> 1
Я искал, и это что-то о запросах с несколькими операторами, но я не знаю, как решитьit.
Edit 2:
Я изменяю свой код ..
conn.query('SELECT * FROM user_contacts WHERE user_id= ?', req.session.user_id, function (err, result) {
if(err) throw err;
var datas = [];
for(var i = 0; i < result.length; i++){
getContacts = function(query){
conn.query(query, function (err, result) {
console.log('Creating data');
data = {
user: req.session.user_nickname,
contact:{
ct_firstName: result[0].ct_firstName,
ct_SecondName: result[0].ct_SecondName,
ct_PhoneNumber: result[0].ct_PhoneNumber
}
}
return data;
});
}
console.log('Send data to array');
datas.push(getContacts(`SELECT * FROM contacts WHERE ct_id = ${result[i].ct_id}`));
}
console.log(datas); // [ undefined, undefined ]
res.render('myProfile/contacts',{
title: `${req.session.user_nickname}'s profile`,
data: datas
})
});
Но теперь мой массив содержит неопределенные объекты ??Любое решение?Может быть, что-то в области?
Мой результат:
- Отправка данных в массив
- Отправка данных в массив
- [undefined, undefined]
- Создание данных
- Создание данных
Я помещаю объект в массив перед его созданием.Как это возможно?