sequelize 播种机上的自定义查询

Posted

技术标签:

【中文标题】sequelize 播种机上的自定义查询【英文标题】:Custom query on sequelize seeder 【发布时间】:2017-07-24 17:16:19 【问题描述】:

任何人都知道如何在 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

我不明白为什么 admin 是这里的专栏???

第二次尝试

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 查询

这让我发疯:)

提前感谢您的帮助!

【问题讨论】:

在第一次尝试时,您应该删除用户周围的引号 它不起作用。查看我更新的 Shivam :) 除非您想创建/使用标识符,否则不要在查询中使用双引号。你的查询应该写成:"SELECT * FROM Users WHERE username = 'admin'" @JorgeCampos 对不起。但与第三次尝试相同的错误。 @ToanTran 关于你的第四次尝试。您是否尝试过在 SQL 语句中将Users 放在引号中? 【参考方案1】:

仔细阅读 Sequelize 文档后,我找到了解决此问题的方法。 Sequelize raw queries replacements。如果您遇到同样的问题,请尝试以下解决方案

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

【讨论】:

以上是关于sequelize 播种机上的自定义查询的主要内容,如果未能解决你的问题,请参考以下文章

使用把手显示来自 sequelize 查询的值

如何使用 sequelize 播种 uuidv4

播种时运行 sequelize 模型钩子

跨 Sequelize 关联播种数据

Sequelize - 如何使用几何值播种数据库?

您如何使用具有多个突变的自定义文件正确播种 prisma DB?