【发布时间】: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放在引号中?
标签: postgresql sequelize.js postgresql-9.4 sequelize-cli