Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – Tedious或Sequelize对`findOne()`使用了错误的语法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Sequelize with Tedious来访问sql Server 2008.

当我做sequelizeModel.findOne()时,我得到这个异常 –

我知道sql Server 2008不支持OFFSET 0 ROWS FETCH NEXT 1 ROWS,这就是引发异常的原因.

但我也明确将tdsVersion设置为7_3_B的繁琐选项.

如此处所述 –
http://pekim.github.io/tedious/api-connection.html

我已经尝试了所有tds版本,生成查询语法总是包含FETCH / NEXT语法.

我错过了什么吗?

语法不应该特定于tds版本吗?

我还验证了tdsVersion选项正在从sequelize成功传递到繁琐的连接库.

生成查询语法示例 –

SELECT 
    [id],[FIRST_NAME],[LAST_NAME]  
FROM  
    [USERs] AS [USERS] 
ORDER BY 
    [id]  
    OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;

解决方法

这是Sequelize中的一个问题 – 它使用 OFFSET FETCH语法,仅在sql Server 2012及更高版本中支持.

我在GitHub上提交了这个问题:https://github.com/sequelize/sequelize/issues/4404

该问题还会影响findById方法.该方法的一种解决方法是使用findAll和where指定ID,并且只使用返回数组中的第一个元素:

Thing.findAll({
  where: {id: id}
}).then( function(things) {
  if (things.length == 0) {
    // handle error
  }
  doSomething(things[0])
}).catch( function(err) {
  // handle error
});

大佬总结

以上是大佬教程为你收集整理的node.js – Tedious或Sequelize对`findOne()`使用了错误的语法全部内容,希望文章能够帮你解决node.js – Tedious或Sequelize对`findOne()`使用了错误的语法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: