为什么我不能像我的MySQL表那样命名我的SailsJS模型?

时间:2015-03-15 23:41:01

标签: javascript mysql model-view-controller express sails.js

我刚刚开始使用Sails JS,而且我对RESTful API缺乏经验。为了开始工作,我按照指南建议生成了User模型。我认为这与我的users表相匹配。我根据表格列为我的模型添加了属性。当我取消我的服务器并向我的用户发出GET请求时,它返回了我的所有用户!我认为此时我可以生成其余的模型,所以我创建了更多。那是我遇到问题的时候。我开始收到此错误:ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELEC FROM 'timeline' AS "timeline"' at line 1。这让我失望了。基于语法错误,我想也许这是我可以做的事情,虽然我没有在任何地方写过任何查询。然后我注意到,当我将模型名称从“时间轴”更改为“时间轴”时,我没有遇到任何问题。

在我看来,Sails有一个问题,我将我的模型命名为与我的表相同的名称。为什么是这样?不这样做会更合乎逻辑吗?此外,Sails是否尝试自动将我的模型与我的表格匹配?

4 个答案:

答案 0 :(得分:1)

在'connection'的位置提供表名作为tableName:'My_Table_Name'并在config / connections.js文件中提供连接为 sqlServer:{     适配器:'sails-sqlserver',     user:'UserName',     密码:'YourPassword',     数据库:'DatabaseName'   },

并将此连接提供给config / models.js as 连接:'sqlServer'

答案 1 :(得分:1)

是的,您可以使用ORM使用与表名相同的模型名称,但在此您不需要在模型中定义tableName。在ORM中,它将自动匹配模型名称和表名。

答案 2 :(得分:0)

没有。 Sails.js将表格命名为模型(小写首字母)。在sails引擎重新生成数据库表之前,您可能在其他地方有错误或应用程序崩溃。

要检查此安装干净风帆实例,请在配置中保存models.migrate等于alter,并使用sails generate api apiName生成所需的任何API。提升风帆,您会发现数据库和apiName模型中存在ApiName.js表。

此行为在使用旧的旧数据库时或模型名称不代表它将存储的数据时会产生麻烦。在这种情况下,您可以将模型中的tableName属性设置为等于表的名称(documentation)。

答案 3 :(得分:0)

我遇到了同样的问题,我通过像这样连接我的SQL表来解决它,只是给了我的行columnName属性

api/models/User.js
module.exports = {
  connection: 'shinyNewMySQLDatabase',
  attributes: {
    name: {
      type: 'string',
      columnName: 'MY_SQL_COLUMN_NAME'
    },
    password: {
      type: 'string',
      columnName: 'MY_SQL_COLUMN_PASSWORD'
    },
    email: {
      type: 'email',
      unique: true,
      columnName: 'MY_SQL_COLUMN_EMAIL'
    }
  }
};

查看下面的文档 http://sailsjs.org/documentation/concepts/models-and-orm/attributes 如果它有用,请告诉我