sequelize 播种器的自定义查询

问题描述 投票:0回答:2

任何人都知道如何在sequelize seeder上自定义选择查询

我尝试了两种方法,但没有一种有效

第一次尝试

  up: function(queryInterface, Sequelize) {
    return queryInterface.sequelize.query(
      'SELECT * FROM "Users" WHERE username = "admin"',
      { type: queryInterface.sequelize.QueryTypes.SELECT }
    ).then(function(users) {});
    },

然后出现错误

SequelizeDatabaseError: column "admin" does not exist

我不明白为什么管理员列在这里???

第二次尝试

return queryInterface.sequelize.query('SELECT * FROM "Users" WHERE username = :admin', {
  replacement: {
    admin: 'admin'
  },
  type: queryInterface.sequelize.QueryTypes.SELECT
}).then(function(users) {
});

出现以下错误

SequelizeDatabaseError: syntax error at or near ":"

第三次尝试

return queryInterface.sequelize.query(
  'SELECT * FROM "Users" WHERE username = ' admin '',
  {type: queryInterface.sequelize.QueryTypes.SELECT})
.then(function(users) { })

错误:

SyntaxError: missing ) after argument list

已更新

第四次尝试

    return queryInterface.sequelize.query(
      'SELECT * FROM Users WHERE username = "admin"',
      { type: queryInterface.sequelize.QueryTypes.SELECT }
    ).then(function(users) {});

出现另一个错误:

    SequelizeDatabaseError: relation "Users" does not exist

queryInterface.sequelize.query('SELECT * FROM "Users"')
工作没有任何错误。我认为这里的问题是 WHERE 查询

这让我发疯:)

感谢您提前提供的任何帮助!

postgresql sequelize.js postgresql-9.4 sequelize-cli
2个回答
17
投票

仔细阅读Sequelize文档后,我找到了这个问题的解决方案。 对原始查询替换进行排序。如果您遇到同样的问题,请尝试以下解决方案

return queryInterface.sequelize.query(
  'SELECT * FROM "Users" WHERE username = ? ', {
    replacements: ['admin'],
    type: queryInterface.sequelize.QueryTypes.SELECT
  }).then(users => {

0
投票

关于@Toan Tran 答案,更新您的迁移:

await queryInterface.sequelize.query(`
      UPDATE public."Table"
      SET "column_to_be_updated" = :column::uuid
      WHERE public."Permissions"."column_to_check" = :column_to_check
    `, {
        replacements: { column_to_be_updated: r.uuid, column_to_check: r.name },
        type: Sequelize.QueryTypes.UPDATE
      });

这是使用 PostgresSQL 的 Sequelize。请注意,此更新也适用于类型为

column
Sequelize.UUID

© www.soinside.com 2019 - 2024. All rights reserved.