Продолжить неправильный запрос? findargs

#node.js #mongodb #express #sequelize.js

Вопрос:

Изображение справа-это код MongoDB, а изображение слева-код последовательности. console.log(findArgs) печатается, и в интерфейсной части нет ошибки, но findArgs не работает. findArgs-это часть фильтрации.

Код секвенирования не работает. Я думаю, что подчеркнутая часть неверна, но я не знаю.

Он реагирует на внутренний маршрутизатор, нажимая значение клавиши, но не на пользовательский интерфейс.

Код MongoDB

 router.post('/AllLists', (req, res) => {
   
  let limit = req.body.limit ? parseInt(req.body.limit) : 20;  
  let skip = req.body.skip ? parseInt(req.body.skip) : 0; 
  let findArgs = {};

  for(let key in req.body.filters) { 
    if (req.body.filters[key].length > 0) { // continet or price 
      console.log('key', key)
      findArgs[key] = req.body.filters[key];
      }
    }
    console.log(findArgs)
    
    Product.find(findArgs)
    .populate("writer") 
    .skip(skip) 
    .limit(limit) 
    .exec((err, productInfo) => {
      if(err) return res.status(400).json({ success: false, err })
    
      return res.status(200).json({
         success: true, productInfo,
      postSize: productInfo.length 
    }) 
  })
})
 

Упорядочить код

 router.post('/AllLists', async (req, res, next ) => {
    let limit = req.body.limit ? parseInt(req.body.limit) : 20;
    let skip = req.body.skip ? parseInt(req.body.skip) : 0; 
    let findArgs = {};

    for(let key in req.body.filters) {
        if(req.body.filters[key].length > 0) {
            findArgs[key] = req.body.filters[key];
        }
    }
    console.log('findArgs', findArgs);
    try {
        const productInfo = await Product.findAll({
            findArgs,
            limit: limit,
            offset: skip,
            include: [
                {
                    model: Image,
                    attributes: ['src']
                },
                
            ],
        });
        res.status(200).json({ success: true,  productInfo, postSize: productInfo.length});
    } catch (err) {
        console.error(err);
        next(err);
    }
})

 

Вывод на серверный маршрутизатор. При нажатии значения клавиши

 findArgs { Brand: [ 2 ] }
 

Является ли запрос findArgs неправильным в последовательности?

Ответ №1:

Во-первых, вам нужно понять, что sequelize-это ORM(Объектно-реляционное сопоставление), Которое используется только для реляционных баз данных(MySQL, Postgres и т. Д.).

для MongoDB, который является базой данных, не связанной с отношениями, вы можете использовать mongoose ODM(Сопоставление объектных документов).