关于网友提出的“ 求助,Sequelize的upsert写法问题”问题疑问,本网通过在网上对“ 求助,Sequelize的upsert写法问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 求助,Sequelize的upsert写法问题
描述:按照文档关于upsert的写法是:
upsert(values, [options]) -> Promise.
创建或更新一行。如果匹配到主键或唯一约束键时会进行更新。
名称 | 类型 | 说明 |
---|
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
是我的语法错了么,求正确写法。
解决方案1:fields
的类型是Array
,表示第一个参数内的部分字段名(例fields
为['count']
的话,upsert
只添加/更新count
字段)- 正确的写法:
model.upsert({
id: 2,
name: find.name
count: 0
})
.then(inserted => { // 此参数表示是添加还是修改,true添加,false修改
model.increment('count', {
by: 2,
where: {id: 2}
});
});
以上介绍了“ 求助,Sequelize的upsert写法问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/4535033.html