Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在连接表时忽略sequelize中的特定外键?_Javascript_Node.js_Postgresql_Express_Sequelize.js - Fatal编程技术网

Javascript 如何在连接表时忽略sequelize中的特定外键?

Javascript 如何在连接表时忽略sequelize中的特定外键?,javascript,node.js,postgresql,express,sequelize.js,Javascript,Node.js,Postgresql,Express,Sequelize.js,为了弄清楚这件事,我最近几个小时一直在发毛。我正在为express应用程序使用sequelizeorm。sequelizedoc对我来说非常混乱,我一直在努力寻找解决方案,但到目前为止都没有 我有三个协会 //models/device.js device.associate = function(models) { device.hasMany(models.actuator_activity, { foreignKey: 'actuator_devic

为了弄清楚这件事,我最近几个小时一直在发毛。我正在为
express
应用程序使用
sequelize
orm。
sequelize
doc对我来说非常混乱,我一直在努力寻找解决方案,但到目前为止都没有

我有三个协会

//models/device.js


device.associate = function(models) {
        device.hasMany(models.actuator_activity, {
          foreignKey: 'actuator_device_id',
          as: 'actuator_activities',
        });
        device.hasMany(models.actuator_activity, {
          foreignKey: 'sensor_device_id',
        });
        device.hasMany(models.sensor_data, {
          foreignKey: 'sensor_device_id',
          as: 'sensor_data',
        });
      };




//models/sensordata.js


sensor_data.associate = function(models) {
    sensor_data.belongsTo(models.device, {
      foreignKey: 'sensor_device_id',
      onDelete: 'CASCADE',
    });
  };




//models/actuatoractivity.js


    actuator_activity.associate = function(models) {
        actuator_activity.belongsTo(models.device, {
          foreignKey: 'actuator_device_id',
          onDelete: 'CASCADE',
        });
        actuator_activity.belongsTo(models.device, {
          foreignKey: 'sensor_device_id',
          onDelete: 'CASCADE',
        });
      };
运行此查询

device.findAll({include:[{model: sensor_data, as: 'sensor_data'}, {model: actuator_activity, as: 'actuator_activities'}]})
返回以下内容:

{
            "id": 2,
            "name": "TEST DEVICE 2",
            "role": "SENSOR",
            "type": "SOIL MOISTURE",
            "io_pin": 5,
            "added_timestamp": "2019-05-01T12:18:08.317Z",
            "client_added_timestamp": "2019-04-23T20:44:29.597Z",
            "min_value": 0,
            "max_value": 1000,
            "sensor_data": [
                {
                    "id": 2,
                    "sensor_device_id": 2,
                    "created_timestamp": "2019-04-23T20:44:29.597Z",
                    "sensor_value": 300
                }
            ],
            "actuator_activities": [
                {
                    "id": 1,
                    "created_timestamp": "2019-04-23T20:44:29.597Z",
                    "name": "Motor turned on",
                    "actuator_device_id": 1,
                    "sensor_device_id": 2
                }
            ]
        },
        {
            "id": 1,
            "name": "TEST DEVICE 1",
            "role": "ACTUATOR",
            "type": "MOTOR",
            "io_pin": 7,
            "added_timestamp": "2019-05-01T12:17:14.026Z",
            "client_added_timestamp": "2019-04-23T20:44:29.597Z",
            "min_value": 0,
            "max_value": 1,
            "sensor_data": [],
            "actuator_activities": []
        }
但我想得到的是:

{
            "id": 2,
            "name": "TEST DEVICE 2",
            "role": "SENSOR",
            "type": "SOIL MOISTURE",
            "io_pin": 5,
            "added_timestamp": "2019-05-01T12:18:08.317Z",
            "client_added_timestamp": "2019-04-23T20:44:29.597Z",
            "min_value": 0,
            "max_value": 1000,
            "sensor_data": [
                {
                    "id": 2,
                    "sensor_device_id": 2,
                    "created_timestamp": "2019-04-23T20:44:29.597Z",
                    "sensor_value": 300
                }
            ],

        },
        {
            "id": 1,
            "name": "TEST DEVICE 1",
            "role": "ACTUATOR",
            "type": "MOTOR",
            "io_pin": 7,
            "added_timestamp": "2019-05-01T12:17:14.026Z",
            "client_added_timestamp": "2019-04-23T20:44:29.597Z",
            "min_value": 0,
            "max_value": 1,
            "actuator_activities": [
                {
                    "id": 1,
                    "created_timestamp": "2019-04-23T20:44:29.597Z",
                    "name": "Motor turned on",
                    "actuator_device_id": 1,
                    "sensor_device_id": 2
                }
            ]
        }
这里的想法是将
id
与嵌套的
执行器\设备\ id
传感器\设备\ id

如果我删除了与
执行器\u活动
设备
与外键
传感器\u设备\u id
的关联,它将按照我的预期工作,但我需要保留它,因为我需要两列的
执行器\u活动
的级联选项

例如,有没有一种方法可以指定在查询时忽略/排除此特定外键

如果不是,我如何在这里实现我的目标

非常感谢您的帮助,谢谢您阅读这篇长文章