【问题标题】:Sailsjs with Sails-SqlServer and Waterline ORMSailsjs 与 Sails-SqlServer 和 Waterline ORM
【发布时间】:2015-08-26 09:02:04
【问题描述】:

无法正确理解 Waterline ORM 文档。我正在寻求有关在没有在我的 Sails API 中定义模型的情况下查询 MSSQL 数据库的正确方法的建议。

到目前为止,我已经成功创建了必要的连接并下载了sails-sqlserver npm 包。

我有一个控制器,代码如下:

    module.exports = {

       /**
       * @name: all
       * @description: return a list of items
       **/

        all: function(req, res){

           /** as per Waterline documentation, use a use an arbitary model to create a raw SQL query **/

           Items.query("select * from table", function(err, resultSet){

              if(err) return res.send(err);

              return res.ok(resultSet);

           });          


        }
    }

Items.js

module.exports = {

  attributes: {

  }
};

使用 Postman 为控制器 GET /api/items 调用路由时

API 不返回响应,它只是挂起,最终超时。

我在 Items.query 上方有 console.log() 以确保控制器正在执行。

我发现 SQL Server 拒绝访问服务器。

用于打开连接的预登录数据包在结构上是 无效的;连接已关闭。请联系供应商 客户端库。

【问题讨论】:

  • 似乎是网络配置问题。我能够成功连接到本地网络服务器而没有任何问题。我试图连接的数据库是通过 VPN

标签: sql-server node.js sails.js waterline


【解决方案1】:

我是sails-sqlserver适配器的维护者。

确保:

  1. 您可以通过 SQL Server Workbench 使用相同的凭据连接到数据库。

  2. 您没有使用任何可能会干扰您的请求的限制性防火墙或代理

  3. 您使用的是受支持的 SQL Server 版本(2008 及更高版本)

【讨论】:

  • 嗨,特拉维斯。感谢您的评论。结果是我需要在我的connections.js 中使用 encrypt: true 选项。我们的 vpn/防火墙可能是问题所在。
  • @goingsideways - 最好将此答案标记为正确。感谢您发布您的问题,因为这个答案对我有帮助。
【解决方案2】:

我认为你是颠倒的,你必须用你的数据库的属性来定义你的模型,例如:

items.js

module.exports = {
  schema: true,
  connection: 'yourConnection',
  tableName: 'yourTableName',
  attributes: {
      id:{
        type:"number",
        primaryKey: true
      },
      name:{
        type:"string"
      },
      address:{
        type:"string"
      }
  }
};

现在,当您调用路由 GET localhost:1337/items 时,它将返回您的所有项目,而控制器中没有函数。

注意:假设您使用的是 localhost。

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 2017-03-22
    相关资源
    最近更新 更多