Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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 在顶层使用关联进行筛选时,继续接收空数组_Javascript_Node.js_Sequelize.js - Fatal编程技术网

Javascript 在顶层使用关联进行筛选时,继续接收空数组

Javascript 在顶层使用关联进行筛选时,继续接收空数组,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,续集版本:6.6.2 上下文 我有三种型号:用户,食品,用户食品。他们之间有一个超级多对多的关系,他们使用 const User=sequelize.define('User'){ 用户名:DataTypes.STRING, }); const Food=sequelize.define('Food'{ 名称:DataTypes.STRING }); const UserFoods=sequelize.define('user\u foods'{ 身份证:{ 类型:DataTypes.INTEG

续集版本:6.6.2

上下文 我有三种型号:用户食品用户食品。他们之间有一个超级多对多的关系,他们使用

const User=sequelize.define('User'){
用户名:DataTypes.STRING,
});
const Food=sequelize.define('Food'{
名称:DataTypes.STRING
});
const UserFoods=sequelize.define('user\u foods'{
身份证:{
类型:DataTypes.INTEGER,
primaryKey:没错,
自动递增:真,
allowNull:错误
},
状态:DataTypes.INTEGER,
});
User.belongtomany(食物,{通过:UserFoods});
Food.belongtomany(用户,{通过:UserFoods});
User.hasMany(UserFoods);
UserFoods.belongsTo(用户);
食物。有很多(用户食物);
UserFoods.belongsTo(食品);
当向用户添加食物时,UserFoods中的
状态列将收到一个数字,该数字将用于创建用户食物列表(收藏夹、好食物、吮吸…)

这样我可以像这样查询:

const foods=wait UserFoods.findAll({
其中:{userId:req.userId,状态:1},
包括:食物,,
});
问题 现在我试图查询所有不在任何用户列表中的食品。我正在做以下工作:

const foods=wait Food.findAll({
其中:{
“$user_foods.userId$”:{[Op.not]:req.userId},
},
包括:{
型号:UserFoods,
复制:假,
},
限额:10,
});
//输出食品:[]
为什么我会收到一个空数组


如果我将
Op.not
更改为
Op.eq
,它将返回属于该用户的所有食物,那么为什么不反过来呢?

使用
Op.ne
插入
Op.not

where: {
    "$user_foods.userId$": { [Op.ne]: req.userId },
  },
我发现了一个关于SQL联接的示例,它建议在第二个表的键上使用null

const foods=wait Food.findAll({
其中:{
[点评]:[
{“$user\u foods.userId$”:{[Op.ne]:req.userId},
{“$user\u foods.userId$”:{[Op.is]:null},
]
},
包括:{
型号:UserFoods,
复制:假,
},
限额:10,
});
因此,对于与用户关联的食品,只返回与当前用户无关的食品

返回所有没有任何关联用户的食物


这是可行的,但我不确定这是否是最好的方法,因为我在Sequelize和SQL方面没有太多经验。

我使用
Op.ne