2017-07-24 146 views
0

任何一个知道如何在sequelize播种机自定义查询

我已经尝试了两种方式自定义选择查询,但没有一个工作

首次尝试

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 

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

第二次尝试

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"')工作没有任何错误。我觉得这里的问题出在哪里查询

它的驾驶我疯狂:)

感谢您的帮助提前!

+0

在第一次尝试,你应该删除各地用户 – Shivam

+0

报价它不工作。查看我更新的Shivam :) –

+0

除非您想创建/使用标识符,否则请勿在查询中使用双引号。你的查询应该写成:'“SELECT * FROM Users WHERE username ='admin'”' –

回答

0

我在仔细阅读Sequelize文档后发现了这个问题的解决方案。 Sequelize raw queries replacements。如果你面临同样的问题,请尝试以下解决方案

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