gpt4 book ai didi

javascript - Sequelize Query FindAll 不过滤

转载 作者:太空宇宙 更新时间:2023-11-03 23:49:20 24 4
gpt4 key购买 nike

我创建了一个休息 API '/getSingleAxisByInstance',它采用一个实例 ID,并且应该从表“设备”的 MySQL 数据库中获取具有此实例 ID 的所有设备。

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}));
});

但它不会过滤行,它只是返回表中独立于实例ID的所有行。当我向查询中添加“属性”时,过滤确实有效:

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;

我错过了什么?预先感谢您!

最佳答案

问题是您在 get 请求中传递正文中的数据。

解决方案 1:将 get 请求更改为 post

  return axios
.post('/device/getDeviceByInstance', { // change it to post
instanceId: myInstance.instanceId
})

同时将您的路线设置为帖子

   router.post('/getDeviceByInstance', (req, res) => {  // change post route 

解决方案 2:您可以使用 get 请求作为查询/参数传递数据

     //frontend
axios
.get(`/device/getDeviceByInstance/${myInstance.instanceId}`)
.then().catch();

//backend
router.get('/getDeviceByInstance/:instanceId', (req, res) => { // change you route

const instanceId = req.params.instanceId; // you can access it as
..........

}

关于javascript - Sequelize Query FindAll 不过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59946424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com