按照文档关于upsert的写法是:
upsert(values, [options]) -> Promise.<created>
创建或更新一行。如果匹配到主键或唯一约束键时会进行更新。
名称 | 类型 | 说明 | |
---|---|---|---|
values | Object | ||
[options] | Object | ||
[options.validate=true] | Boolean | 插入前进行验证 | |
[options.fields=Object.keys(this.attributes)] | Array | 要插入/更新字段。默认全部 | |
[options.transaction] | Transaction | 在事务中执行查询 |
尝试写了一段,查找数据,如果没有创建,如果有则更新。
model.upsert({
id: 2,
name: find.name
count: 1,
}, {
fields: { count: Sequelize.literal('`count` +1') },
});
执行总报错: nodejs.TypeError: fields[Symbol.iterator] is not a function
是我的语法错了么,求正确写法。
fields
的类型是Array
,表示第一个参数内的部分字段名(例fields
为['count']
的话,upsert
只添加/更新count
字段)