查询错误?查找参数
Sequelize Wrong query? findargs
右图为MongoDB代码,左图为Sequelize代码。打印了console.log(findArgs),前端部分没有报错,但是findArgs不行。
findArgs是过滤部分。
Sequelize 代码不起作用。我觉得下划线部分是错误的,但我不知道。
它通过按键值响应后端路由器,但不响应UI。
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 ] }
Sequelize 中的 findArgs 查询是否错误?
首先,您需要了解sequelize是ORM(Object Relational Mapping),它只用于关系数据库(MySQL、Postgres等)。
对于MongoDB是非关系数据库,可以使用mongoose ODM(Object Document Mapping)
右图为MongoDB代码,左图为Sequelize代码。打印了console.log(findArgs),前端部分没有报错,但是findArgs不行。 findArgs是过滤部分。
Sequelize 代码不起作用。我觉得下划线部分是错误的,但我不知道。
它通过按键值响应后端路由器,但不响应UI。
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 ] }
Sequelize 中的 findArgs 查询是否错误?
首先,您需要了解sequelize是ORM(Object Relational Mapping),它只用于关系数据库(MySQL、Postgres等)。
对于MongoDB是非关系数据库,可以使用mongoose ODM(Object Document Mapping)