【发布时间】:2020-05-13 17:32:50
【问题描述】:
我创建了一个 rest api '/getSingleAxisByInstance',它接受一个 instanceid 并且应该从表 'Devices' 的 MySQL 数据库中获取所有具有此 instanceid 的设备。
router.get('/getDeviceByInstance', (req, res) => {
Device.findAll({where: {instanceid: req.body.instanceid}})
.then(device=> {
res.status(200).send(device);
})
.catch(err => res.status(400).json({message: 'Error', err}));
});
但它不会过滤行,它只是从独立于 instanceid 的表中返回所有行。 当我像这样向查询中添加“属性”时,过滤确实有效:
Device.findAll({attributes: ['instanceid', 'name', 'deviceId']},
{where: {instanceid: req.body.instanceid}})
问题是我无法使用此代码从前端使用 REST Api。当我将属性添加到配置中时,查询每次都会失败。当我从配置中删除属性时,它工作正常。
带有axios请求的前端代码:
export const getDeviceByInstance = myInstance => {
return axios
.get('/device/getDeviceByInstance', {
instanceId: myInstance.instanceId
})
.then((res => {
return res;
}))
.catch(err => {
return err;
})
};
我的设备表型号代码:
const Sequelize = require('sequelize');
const db = require('../config/mainDatabase');
const Device= db.define('device', {
deviceId: {type: Sequelize.INTEGER, primaryKey: true},
name: {type: Sequelize.STRING},
instanceId: {type: Sequelize.INTEGER},
});
module.exports = Device;
我错过了什么?提前谢谢!
【问题讨论】:
-
req.body打印是否正确??
标签: javascript node.js reactjs axios sequelize.js