spo*_*rts 29 node.js sequelize.js
这是我的模型定义:
var Tag = sequelize.define('Tag', {
name: Sequelize.STRING
});
var Event = sequelize.define('Event', {
name: Sequelize.STRING,
});
Event.hasMany(Tag, {as: 'tags', through: 'event_tags', foreignKey: 'eventId'});
Tag.hasMany(Event, {as: 'events', through: 'event_tags', foreignKey: 'tagId'});
Run Code Online (Sandbox Code Playgroud)
用语言来说就是:有事件和标签.事件标记有许多标记.
我正在尝试运行此查询:
Event
.findAndCountAll({
include: [{model: Tag, as: 'tags'}],
where: {'tags.id': {in: [1,2,3,4]}},
order: order,
limit: pageSize,
offset: pageSize * (page - 1),
})
.success(function(result) {
...
});
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误:
\node_modules\sequelize\lib\dialects\abstract\query-generator.js:1134
var logicResult = Utils.getWhereLogic(logic, hash[key][logic]);
^
TypeError: Cannot read property 'in' of undefined
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我在"in"表达式之前使用过,例如:
Tag
.find({
where: {id: {in: [1,2,3,4]}}
}).success(...)
Run Code Online (Sandbox Code Playgroud)
它运作得很好.
我从来没有使用带有子数组的in表达式,就像在这种情况下一样.所以我不知道这是不是正确的做法.
小智 92
不需要"in"属性,sequelize auto定义这个.只需设置数组.
Tag.findAll({
where: {
id: [1,2,3,4]
}
}).then(...)
Run Code Online (Sandbox Code Playgroud)
Bra*_*rad 20
Sequelize v5 的更新示例:
await Tag.findAll({
where: {
id: {
[Sequelize.Op.in]: [1, 2, 3, 4]
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37804 次 |
| 最近记录: |