Size: a a a

Sequelize - community (eng/ru)

2020 March 05

A

Abdubosit in Sequelize - community (eng/ru)
У меня возник один не большой вопрос, как с помощью Sequelize можно вывести данные таблицы, которая имеет связь с другой таблицей. В данный момент у меня есть таблицы QuestionCategory и Group, QuestionCategory имеет hasMany relationship с Group, их foreign key является questionCategoryId1, соответственно при вводе данных Группы и категории вопросов, в таблице Group сохраняются все введенные данные и в колонке questionCategoryId1 сохраняется id введенной категории. Сейчас, когда я использую findAll метод, я получаю id Категорий, а мне нужны их наименования
источник

A

Abdubosit in Sequelize - community (eng/ru)
источник

A

Abdubosit in Sequelize - community (eng/ru)
Таблица QuestionCategory
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
вам нужно использовать association, в доке есть примеры
источник

A

Abdubosit in Sequelize - community (eng/ru)
const groups = await Group.findAll();
       var queCat = "";
       var gr = [];

       await groups.map(async group => {

           if(group.questionCategoryId1){
               await QuestionCategory.findOne({where: {id: group.questionCategoryId1}}).then(res => {
                   queCat = res.category;
                   console.log(queCat);
                   
               }).catch(e => {
                   console.log("There was an error fetching the data: \n", e)
               });
           }
           
           await gr.push({
               "id": group.id,
               "groupname": group.groupname,
               "branch": group.branch,
               "department": group.department,
               "position": group.position,
               "assignedQuestions": [queCat]
           });

       });

       res.send(gr);
источник

A

Abdubosit in Sequelize - community (eng/ru)
Abdubosit
const groups = await Group.findAll();
       var queCat = "";
       var gr = [];

       await groups.map(async group => {

           if(group.questionCategoryId1){
               await QuestionCategory.findOne({where: {id: group.questionCategoryId1}}).then(res => {
                   queCat = res.category;
                   console.log(queCat);
                   
               }).catch(e => {
                   console.log("There was an error fetching the data: \n", e)
               });
           }
           
           await gr.push({
               "id": group.id,
               "groupname": group.groupname,
               "branch": group.branch,
               "department": group.department,
               "position": group.position,
               "assignedQuestions": [queCat]
           });

       });

       res.send(gr);
Это возвращает пустой массив
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
я вам уже ответил
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
Yaroslav Zhymkov
вам нужно использовать association, в доке есть примеры
пример работы с ассоциациями есть в доке и в гайде закрепленом.
источник

A

Abdubosit in Sequelize - community (eng/ru)
Yaroslav Zhymkov
пример работы с ассоциациями есть в доке и в гайде закрепленом.
Если у вас имеется ссылка, можете пожалуйста поделиться
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
источник

A

Abdubosit in Sequelize - community (eng/ru)
Спасибо большое)
источник
2020 March 07

ii

iCheater iCheater in Sequelize - community (eng/ru)
hi! would you please give me an example of  best practice how to handle sequelize errors (using express) ?
привет! Не могли бы вы привести пример наилучшей практики обработки ошибок sequelize (используя express)  ?
источник

ii

iCheater iCheater in Sequelize - community (eng/ru)
Well, i know, that i have to chain all promises, i do only 1 "catch",  but i dont know what to do, when i need to run sequelize instance  in IF block (lines 35-60). Right now , use async\await. But do we have another options? If there no options, next question is "what is good way to send different messages for errors?"  
Я знаю что нужно вызывать цепочку промисов и в конце повесить 1 кетч, но я не понял как быть, если один из промисов внутри блок if, (строка 35-60). Сейчас я использу async\await. А есть другие варианты? Если нет, то "как правильно обрабатывать ошибки, в смысле писать нужное сообщение на нужную ошибку"?
(каков шанс того, что тот, кто мне поможет, знает английский плохо и мне нужно писать перевод?😅)
https://github.com/iCheater/expressServer/blob/64928561cec7f1e149e477010b6133ae341e74a3/routes/order.js#L35

if (!req.session.user) {
     if (!isAuthorlessValid(req.session.authorless)) {
       return res.json({ message: 'данные пользователя не валидны' })
     }
     user = await User.create({
       username: req.session.authorless.username,
       email: req.session.authorless.email,
       password: tempPassword,
       phone: req.session.authorless.phone,
       addresses: [{
         textAddress: req.session.authorless.address,
       }],
     }, {
       include: {
         model: Address,
         as: 'addresses',
       },
     })
   }
источник
2020 March 08

VL

Vladimir Lastovka in Sequelize - community (eng/ru)
iCheater iCheater
hi! would you please give me an example of  best practice how to handle sequelize errors (using express) ?
привет! Не могли бы вы привести пример наилучшей практики обработки ошибок sequelize (используя express)  ?
Why you not use something like
express.use((err, req, res, next) => {
   // render the error page
   
res.status(err.status || 500).send({ name: err.namename, message: err.message });
   logger.error(err, 'SOME CODE PROBLEM');
});
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
iCheater iCheater
Well, i know, that i have to chain all promises, i do only 1 "catch",  but i dont know what to do, when i need to run sequelize instance  in IF block (lines 35-60). Right now , use async\await. But do we have another options? If there no options, next question is "what is good way to send different messages for errors?"  
Я знаю что нужно вызывать цепочку промисов и в конце повесить 1 кетч, но я не понял как быть, если один из промисов внутри блок if, (строка 35-60). Сейчас я использу async\await. А есть другие варианты? Если нет, то "как правильно обрабатывать ошибки, в смысле писать нужное сообщение на нужную ошибку"?
(каков шанс того, что тот, кто мне поможет, знает английский плохо и мне нужно писать перевод?😅)
https://github.com/iCheater/expressServer/blob/64928561cec7f1e149e477010b6133ae341e74a3/routes/order.js#L35

if (!req.session.user) {
     if (!isAuthorlessValid(req.session.authorless)) {
       return res.json({ message: 'данные пользователя не валидны' })
     }
     user = await User.create({
       username: req.session.authorless.username,
       email: req.session.authorless.email,
       password: tempPassword,
       phone: req.session.authorless.phone,
       addresses: [{
         textAddress: req.session.authorless.address,
       }],
     }, {
       include: {
         model: Address,
         as: 'addresses',
       },
     })
   }
Вы англоворящий?
источник

YZ

Yaroslav Zhymkov in Sequelize - community (eng/ru)
Это не вопрос по секвалайзу.обычно у меня обработчик ошибок на самом верху,чтоб словить все ошибки
источник
2020 March 09

ii

iCheater iCheater in Sequelize - community (eng/ru)
Yaroslav Zhymkov
Вы англоворящий?
Нет. Подумал что так больше шансов получить ответ.
источник

ii

iCheater iCheater in Sequelize - community (eng/ru)
Yaroslav Zhymkov
Это не вопрос по секвалайзу.обычно у меня обработчик ошибок на самом верху,чтоб словить все ошибки
Вы о примере, как у Владимира выше?
источник

ii

iCheater iCheater in Sequelize - community (eng/ru)
в bulkCreate можно как-то сделать инклюд, чтоб после создания возвращалось не просто созданная строка orderItems, а вложенная объект  с product_id ?
const cartItems = []
   for (const productID of productIDs) {
     const cartItem = {
       quantity: req.session.cart[productID].quantity,
       subTotal: req.session.cart[productID].subTotal,
       product_id: productID,
       order_id: order.id,
     }
     cartItems.push(cartItem)
   }

   const orderItems = await OrderItem.bulkCreate(cartItems, { returning: true })
....

"orderItems": [
{
"id": 19,
"quantity": 1,
"subTotal": null,
"product_id": 103,
"order_id": 108,
"createdAt": "2020-03-09T13:53:58.084Z",
"updatedAt": "2020-03-09T13:53:58.084Z"
}, .....
источник

AA

Azamat Abdullaev in Sequelize - community (eng/ru)
Hi! I have 4 models that are titled: Professor, Course, Semester and Section. Section is associated with the other 3 models. Here is one row of Section table,  why does it contain duplicate fields like "courseId" and "CourseId", "professorId" and "ProfessorId"... . How to remove the duplicates?
источник