删除了以下划线开头的 Firebase 数据库键
Firebase database keys beginning with underscore removed
我开始编写一个网络应用程序,用户对象有一个 _username
键,所以它在开头。
如果我将对象添加到 firebase 数据库,它不存在 - 其他一切都存在。
为什么这个 key/value 对不在数据库中?我的意思是它有效 JSON,不是吗?
我的意思是除了简单地重命名它还有其他解决方案吗?
我被推送到数组的对象具有以下结构:
{
_username:"",
history:[],
// ...
}
我的代码:
var users = $firebaseArray(ref.child("user"));
// adding user
users.$add($scope.session.user);
// logging afterwards - also no '_username'
// logging on init
users.$loaded().then(function (data) {
$log.debug(data);
});
一切都被存储,除了下划线变量...
看起来 $add()
(或更具体地说 $firebaseUtils.toJSON()
)删除了名称以 _
开头的属性。快速查看的方法是:
console.log($firebaseUtils.toJSON(user));
解决方法是通过 JavaScript SDK 将用户对象直接写入数据库:
ref.child("user").push(user);
这 会 写入所有具有有效键名称的属性,包括以 _
.
为前缀的属性
由于 AngularFire 是在相同的 JavaScript SDK 之上构建的,它会立即获取更改。
jsbin 中的演示:http://jsbin.com/lobadej/edit?js,console
这是一个设计决定,基于以下事实:声明私有变量的常见 JavaScript 约定是在它们前面加上 _
。
关于为什么它不同于默认 SDK 行为的上下文,请记住 AngularFire 正在创建可以扩展的 class 个实例,并提供 client-side 功能(不是只是用于数据传输的原始 JSON 对象)。因此,我们的目标是尽可能简单直接地扩展和使用 $firebaseArray 和 $firebaseObject,并使保存和服务器同步尽可能透明。
为此,您需要一个简单的约定来将 "local" 或私有内容与您要发送到服务器的内容分开。由于 $ 在技术上由 Angular 库保留,因此 _
仍然是在 ES6 之前为私有变量和方法添加前缀的适当方式。
如果有很多人在这里遇到问题,我们可以重新访问,但考虑到它已经以这种方式实施了将近 3 年,而且这是对它的第一条评论,我怀疑它没有问题。
我开始编写一个网络应用程序,用户对象有一个 _username
键,所以它在开头。
如果我将对象添加到 firebase 数据库,它不存在 - 其他一切都存在。
为什么这个 key/value 对不在数据库中?我的意思是它有效 JSON,不是吗?
我的意思是除了简单地重命名它还有其他解决方案吗?
我被推送到数组的对象具有以下结构:
{
_username:"",
history:[],
// ...
}
我的代码:
var users = $firebaseArray(ref.child("user"));
// adding user
users.$add($scope.session.user);
// logging afterwards - also no '_username'
// logging on init
users.$loaded().then(function (data) {
$log.debug(data);
});
一切都被存储,除了下划线变量...
看起来 $add()
(或更具体地说 $firebaseUtils.toJSON()
)删除了名称以 _
开头的属性。快速查看的方法是:
console.log($firebaseUtils.toJSON(user));
解决方法是通过 JavaScript SDK 将用户对象直接写入数据库:
ref.child("user").push(user);
这 会 写入所有具有有效键名称的属性,包括以 _
.
由于 AngularFire 是在相同的 JavaScript SDK 之上构建的,它会立即获取更改。
jsbin 中的演示:http://jsbin.com/lobadej/edit?js,console
这是一个设计决定,基于以下事实:声明私有变量的常见 JavaScript 约定是在它们前面加上 _
。
关于为什么它不同于默认 SDK 行为的上下文,请记住 AngularFire 正在创建可以扩展的 class 个实例,并提供 client-side 功能(不是只是用于数据传输的原始 JSON 对象)。因此,我们的目标是尽可能简单直接地扩展和使用 $firebaseArray 和 $firebaseObject,并使保存和服务器同步尽可能透明。
为此,您需要一个简单的约定来将 "local" 或私有内容与您要发送到服务器的内容分开。由于 $ 在技术上由 Angular 库保留,因此 _
仍然是在 ES6 之前为私有变量和方法添加前缀的适当方式。
如果有很多人在这里遇到问题,我们可以重新访问,但考虑到它已经以这种方式实施了将近 3 年,而且这是对它的第一条评论,我怀疑它没有问题。