PDO + Angular:如何使用Angular的camelCase协调DB underscore_case?

时间:2015-04-26 08:21:39

标签: php angularjs pdo camelcasing

我有一个AngularJs应用程序,它使用php PDO API连接到数据库。

这是原理图数据流:

DB:
  CREATE TABLE person (
    ...
    first_name,
    ...
  );

php API:
  $stmt = $this->db->prepare("SELECT * FROM person");
  $stmt->execute();
  $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
  var_dump($result);
  ...
  'first_name' => 'Alice',
  ...

angular service:
  getPerson: function (id) {
    return $http({
      method: 'GET',
      url: apiUri + 'get' + '/' + id,
    }).then(handleSuccess, handleError);
  },

angular controller:
  Person.getPerson(id).then(function(person) {
    var name = person.first_name; // this throws a jslint warning
  });

问题是SQL建议的命名标准是underscore_case,而Angular的是camelCase ......

我不想禁用jslint,这在其他方面非常有用......

我知道即使用

我也可以避免警告
{
  "camelcase": false
}
<。>在.jshintrc中,但我不想全局禁用camelcase检查...

目前我通过&#34; jslint评论&#34;来避免jslint警告,这样:

/* jshint camelcase: false */
var name = person.first_name;
/* jshint camelcase: true */

但是我的代码将包含比代码更多的jslint注释...相当难以理解......

你(或者你会)如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

像使用数组一样使用对象:person['first_name']

答案 1 :(得分:0)

由于下划线_case对于SQL不是强制性的,因此对于Angular来说,camelCase是强制性的,因此可以使用适合两种环境的名称。在这种情况下,两者都可以使用camelCase。

在40多年的编程中,我从未想过underscore_case是有用的。我一直喜欢camelCase。将first_name重命名为firstName不仅看起来更好,而且可以解决问题。

修改

标准SQL中的列名可以包含字母,下划线和 以字母开头的数字。 SQL允许您在名称中使用空格,保留字和特殊字符(如果用双引号括起来)。

标识符不仅必须有意义,而且必须是唯一的。因此,在选择命名约定时,必须考虑操作的环境

<强>窗

SQL是大小写的,即NAME == name == Name == NaMe

<强>的Unix

SQL是case sesitive,即NAME!= name!= Name!= NaMe

Michael Lato为MS Server推荐PascalCase,  Oracle使用带有下划线的UPPER。 MySQL使用下划线建议降低,但这不是必需的See

注意

在Windows上,InnoDB始终在内部以小写

存储数据库和表名