2015-08-26 38 views
4

正确理解Waterline ORM文档有些麻烦。我在查询MSSQL数据库时没有在Sails API中定义模型方面寻求正确的方法。Sailsjs with Sails-SqlServer和Waterline ORM

到目前为止,我已经成功创建了必要的连接并下载了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: { 

    } 
}; 

在呼叫路由使用邮差

的API不返回控制器GET /api/items反应,它只是挂起,最终超时。

我在console.log()上面的Items.query确保控制器正在执行。

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

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

+0

似乎是一个网络配置问题。我能够毫无问题地连接到本地网络服务器。 我试图连接的数据库是通过VPN – goingsideways

回答

3

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

确保:

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

  2. 你没有任何限制性防火墙或代理可能与您的要求

  3. 您使用的SQL Server(2008及以上)的受支持版本

+1

Hi Travis。感谢您的评论。原来,我需要在我的connections.js中使用encrypt:true选项。我们的VPN /防火墙可能是问题。 – goingsideways

+0

@ goingsideways - 很好地标记这个答案是正确的。感谢您发布您的问题,因为这个答案帮助了我。 – arcseldon

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时,它将返回您的控制器中没有功能的所有项目。

注意:假设您使用本地主机。