首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在迁移中对bulkUpdate进行后缀后,我可以访问“`this`”来生成值吗?

在迁移中对bulkUpdate进行后缀后,我可以访问“`this`”来生成值吗?
EN

Stack Overflow用户
提问于 2021-12-17 17:45:01
回答 1查看 140关注 0票数 0

在后缀中,您可以在迁移中记录bulkUpdate。但是我希望使用fullName属性的值生成一个@handle属性。是否有一种方法可以访问我正在更新的记录(比如this),比如:

代码语言:javascript
复制
'use strict';
module.exports = {
  up: function(queryInterface, Sequelize) {
    return queryInterface.bulkUpdate('users', { handle: this.fullName.replace(/\s+/g, '') });
  },
  down: function(queryInterface, Sequelize) {
    return queryInterface.bulkDelete('roles', null, {});
  }
};
EN

回答 1

Stack Overflow用户

发布于 2021-12-17 18:12:59

bulkUpdate没有模型实例来更新它们。它生成针对DB执行的UPDATE SQL查询,因此您需要使用DB函数来替换将更新的每条记录中的某个子字符串。这样的函数在很大程度上依赖于某种类型的DBMS,所以看看DBMS文档中关于如何实现这种替换的文档。

看起来可能是这样的:

代码语言:javascript
复制
queryInterface.bulkUpdate('users', {
  handle: Sequelize.fn('replace', Sequelize.col('fullName'), 'substring to be replaced', 'substring to use as a replcement')
})

不能保证DBMS支持用于替换a.substring的函数中的正则表达式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70396965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档