当我使用$add
函数添加新记录时,如何在angularfire中的数组中生成自定义键。只需看看下面的源代码中的注释。这是我的代码,但仍然得到firebase生成的随机密钥。
register : function(user){
return simpleLogin.$createUser({
email: user.email,
password: user.password
}).then(function(regUser){
//console.dir(regUser);
var ref = new Firebase(FIREBASE_URL + 'users');
var firebaseUsers = $firebaseArray(ref);
var userInfo = {
date: Firebase.ServerValue.TIMESTAMP,
regUser: regUser.uid,
firstname: user.firstname,
lastname: user.lastname,
email: user.email
}
//this is when i want to generate the key
firebaseUsers.$add(userInfo).then(function(ref) {
});
});
},//register
答案 0 :(得分:6)
调用$add
只会导致所谓的推送ID 。如果您不想使用这些推送ID来识别对象,则解决方案是不要致电$add
/ push
。
相反,您只需访问要直接创建的子项:
var ref = new Firebase(FIREBASE_URL + 'users');
var userInfo = {
date: Firebase.ServerValue.TIMESTAMP,
regUser: regUser.uid,
firstname: user.firstname,
lastname: user.lastname,
email: user.email
}
ref.child(regUser.uid).set(userInfo);
这里有两点需要注意:
regUser.uid
下创建子节点。如果您需要其他密钥,可以替换它。答案 1 :(得分:0)
在上面的mem Frank van Puffelen的帮助下我修改了代码:
register : function(user){
return simpleLogin.$createUser({
email: user.email,
password: user.password
}).then(function(regUser){
//console.dir(regUser);
var ref = new Firebase(FIREBASE_URL + 'users');
var firebaseUsers = $firebaseArray(ref);
var userInfo = {
date: Firebase.ServerValue.TIMESTAMP,
regUser: regUser.uid,
firstname: user.firstname,
lastname: user.lastname,
email: user.email
}
//the added portion of code
ref.child(regUser.uid).set(userInfo);
firebaseUsers.$add(userInfo).then(function(ref) {
});
});
},//register
我得到了我想要的结果,在angularfire API中没有函数('child()'和set())但是在mester Frank van Puffelen angularfire API的帖子中提到的是在firebase API上构建。
这是我的数据库firebase中的捕获图像。