我有一个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注释...相当难以理解......
你(或者你会)如何解决这个问题?
答案 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始终在内部以小写
存储数据库和表名