【问题标题】:Connect Sails JS to SQL Server EXPRESS将 Sails JS 连接到 SQL Server EXPRESS
【发布时间】:2018-01-31 19:04:29
【问题描述】:

我正在学习 Sails JS(和 NodeJS),并且正在尝试设置与 SQL Server Express 的连接。到目前为止我所拥有的:

一个名为 test-project-db 的数据库,其中包含一个名为 TestTable1 的表。它有两列:name varchar(20)description varchar(100)

使用sails new 生成的sails 项目,以及使用sails generate api TestTable1 制作的模型/组件。

我的文件: - api/models/TestTable1.js

module.exports = {

  attributes: {

    name: {
      type: 'string',
    },

    description: {
      type: 'string',
    },

  }
};

- config/connections.js:

sqlserver: {
    adapter : 'sails-sqlserver',
    user    : 'sa',
    password: 'passw',
    host    : 'localhost\\SQLEXPRESS',
    database: 'test-project-db'
  }

- 配置/models.js:

module.exports.models = {

  connection: 'sqlserver',

  migrate: 'safe',

};

但是当我使用sails lift 运行服务器并转到localhost:1337/testtable1 时,我得到了错误:

(node:15756) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ConnectionError: Failed to connect to localhost:undefined in 60000ms
(node:15756) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

而且,如果我使用 sails-mssqlserver 而不是 sails-sqlserver,我会得到(在控制台中):

{"name":"Sails-MSSqlserver","hostname":"DESKTOP-PMN0K03","pid":15928,"level":30,"msg":"Error in __FIND__: { ConnectionError: Failed to connect to localhost:undefined in 60000ms\n    at Connection.<anonymous> (D:\\Práctica 2\\test-project\\node_modules\\sails-mssqlserver\\node_modules\\mssql\\lib\\tedious.js:378:25)\n    at Object.onceWrapper (events.js:315:30)\n    at emitOne (events.js:116:13)\n    at Connection.emit (events.js:211:7)\n    at Connection.connectTimeout
(D:\\Práctica 2\\test-project\\node_modules\\sails-mssqlserver\\node_modules\\tedious\\lib\\connection.js:467:12)\n    at ontimeout (timers.js:475:11)\n    at tryOnTimeout (timers.js:310:5)\n    at Timer.listOnTimeout (timers.js:270:5)\n  name: 'ConnectionError',\n  message: 'Failed to connect to localhost:undefined in 60000ms',\n  code: 'ETIMEOUT' }","time":"2018-01-31T19:00:27.325Z","v":0}
error: Sending 500 ("Server Error") response:
 Error (E_UNKNOWN) :: Encountered an unexpected error
ConnectionError: Failed to connect to localhost:undefined in 60000ms
    at Connection.<anonymous> (D:\Práctica 2\test-project\node_modules\sails-mssqlserver\node_modules\mssql\lib\tedious.js:378:25)
    at Object.onceWrapper (events.js:315:30)
    at emitOne (events.js:116:13)
    at Connection.emit (events.js:211:7)
    at Connection.connectTimeout (D:\Práctica 2\test-project\node_modules\sails-mssqlserver\node_modules\tedious\lib\connection.js:467:12)
    at ontimeout (timers.js:475:11)
    at tryOnTimeout (timers.js:310:5)
    at Timer.listOnTimeout (timers.js:270:5)

Details:  ConnectionError: Failed to connect to localhost:undefined in 60000ms

在浏览器中:

[Error (E_UNKNOWN) Encountered an unexpected error] Details:  ConnectionError: Failed to connect to localhost:undefined in 60000ms

沿着 500 错误页面。

知道我做错了什么吗?

【问题讨论】:

  • 我认为您的问题在于您在connections.js 中的SQL 服务器配置,主机应设置为IP 加上运行数据库的端口。对于 SQL express,这应该是端口 1433。所以将主机设置为 'localhost:1433' 或 '127.0.0.1:1433'。

标签: javascript node.js sails.js sql-server-express


【解决方案1】:

localhost:undefined --> 端口未定义,因为您没有在配置中提供它。将port 属性添加到config/connections.js 内的sqlserver 连接中,并为其分配数据库服务器的端口。

旁注:在学习 Node 的同时学习 Sails 非常少,尤其是因为 Sails 一开始看起来很吓人。一点一点地拿它,你肯定会掌握它的。如果您熟悉诸如 Rails 之类的 MVC 框架,那么 Sails 会感到宾至如归。

【讨论】:

  • 谢谢!过了一会儿我注意到了。但我还有另一个问题,这可能对某人有用。使用localhost\\SQLEXPRESS 实际上并没有为我工作。我必须去 SQL 配置管理器并启用127.0.0.1 IP,然后将localhost\\SQLEXPRESS 切换为127.0.0.1,同时显然将port: '1433' 添加到字典中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 2012-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多