Sequelize MSSQL - 不返回元数据和结果

时间:2018-03-21 14:40:47

标签: sql-server node.js sequelize.js

我在MSSQL数据库上运行如下的原始查询:

sequelize.query(DELETE FROM vehicle where vehicleId IN ('1', '2', '3'))

返回始终为[ [], [] ]。这应该包含元数据和数组结果。我们还有一个具有相同表的MYSQL数据库。当在那里运行相同的查询时,结果会带有预期的元数据和结果。

根据documentation,如果我将{ type: sequelize.QueryTypes.DELETE}作为第二个参数包含,它将只返回没有元数据的结果。相反,它返回undefined

我在这里缺少什么?

2 个答案:

答案 0 :(得分:0)

因此,对于那些希望找到相同或类似问题答案的人,我通过添加OUTPUT DELETED.id, DELETED.createdOn, ... WHERE <where clause>来完成这项工作。这也适用于插入。您只需将DELETED替换为INSERTED即可。有关详细信息,请参阅此documentation

PS:在原始问题上错误地指出SELECT而不是DELETE

答案 1 :(得分:0)

我通过在INSERT语句后附加SELECT语句解决了此问题。对于我的特定问题,我有以下内容:

sequelize.query('INSERT INTO Users (FirstName, LastName, Email, Pwd) VALUES (@first_name, @last_name, @email, @password)')

我将其更新为

sequelize.query('INSERT INTO Users (FirstName, LastName, Email, Pwd) VALUES (@first_name, @last_name, @email, @password) SELECT FirstName, LastName, Email, UserID FROM Users WHERE Email = @email')

为清楚起见,这是完整的SQL语句:

INSERT INTO Users (FirstName, LastName, Email, Pwd)
VALUES (@first_name, @last_name, @email, @password)
SELECT FirstName, LastName, Email, UserID
FROM Users
WHERE Email = @email

基本上是两个查询。这将返回插入的数据,而无需使用OUTPUT子句。