我正在做一些关于出租房屋和公寓的项目,我已经达到了需要根据房屋拥有的功能(wifi、安全和其他工作人员)实施过滤房屋的程度。一开始我决定第一次尝试 Sequelize ORM。像添加、创建、编辑这样的东西工作正常,但过滤部分是我遇到的一些问题。
\n\n我正在使用 nodejs、express 和 postgresql。\n我需要找到所有具有功能 ID 数组中列出的功能的房屋。这是我尝试过的。在这个例子中,我试图获取具有 id 1、2 和 4 的特征的房屋。
\n\ndb.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})\nRun Code Online (Sandbox Code Playgroud)\n\n通过单个功能 ID 获取房屋效果很好,因为我在那里不使用 Op.contains。\n以下是与此案例相关的一些关系:
\n\nHouse.hasMany(models.HouseFeature, { onDelete: \'CASCADE\' });\nHouseFeature.belongsTo(models.House);\nRun Code Online (Sandbox Code Playgroud)\n\nHouseFeature 包含 featureId 字段。\n这是我收到的错误:
\n\nerror: \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)