小编Fuj*_*uji的帖子

Sequelize,如何使用 Op.contains 查找具有特定值的模型

我正在做一些关于出租房屋和公寓的项目,我已经达到了需要根据房屋拥有的功能(wifi、安全和其他工作人员)实施过滤房屋的程度。一开始我决定第一次尝试 Sequelize ORM。像添加、创建、编辑这样的东西工作正常,但过滤部分是我遇到的一些问题。

\n\n

我正在使用 nodejs、express 和 postgresql。\n我需要找到所有具有功能 ID 数组中列出的功能的房屋。这是我尝试过的。在这个例子中,我试图获取具有 id 1、2 和 4 的特征的房屋。

\n\n
db.House.findAll({\n  include: [{\n    model: db.HouseFeature, \n    as: \'HouseFeatures\',\n    where: {\n      featureId: {\n        [Op.contains]: [1, 2, 4] //<- array of featuresIds\n      }  \n    }\n  }]\n})\n
Run Code Online (Sandbox Code Playgroud)\n\n

通过单个功能 ID 获取房屋效果很好,因为我在那里不使用 Op.contains。\n以下是与此案例相关的一些关系:

\n\n
House.hasMany(models.HouseFeature, { onDelete: \'CASCADE\' });\nHouseFeature.belongsTo(models.House);\n
Run Code Online (Sandbox Code Playgroud)\n\n

HouseFeature 包含 featureId 字段。\n这是我收到的错误:

\n\n
error: \xd0\xbe\xd0\xbf\xd0\xb5\xd1\x80\xd0\xb0\xd1\x82\xd0\xbe\xd1\x80 \xd0\xbd\xd0\xb5 \xd1\x81\xd1\x83\xd1\x89\xd0\xb5\xd1\x81\xd1\x82\xd0\xb2\xd1\x83\xd0\xb5\xd1\x82: integer @> unknown\n       at Connection.parseE (C:\\***\\server\\node_modules\\pg\\lib\\connection.js:601:11)\n       at Connection.parseMessage (C:\\***\\server\\node_modules\\pg\\lib\\connection.js:398:19)\n       at Socket.<anonymous> (C:\\***\\server\\node_modules\\pg\\lib\\connection.js:120:22)\n       at Socket.emit (events.js:182:13)\n       at addChunk (_stream_readable.js:283:12)\n       at …
Run Code Online (Sandbox Code Playgroud)

postgresql node.js express sequelize.js

5
推荐指数
1
解决办法
9309
查看次数

标签 统计

express ×1

node.js ×1

postgresql ×1

sequelize.js ×1