使用$ add angularfire生成自定义键

时间:2015-05-30 18:10:52

标签: javascript firebase angularfire

当我使用$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

still got the random key with the $add function

2 个答案:

答案 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);

这里有两点需要注意:

  1. 该代码段在regUser.uid下创建子节点。如果您需要其他密钥,可以替换它。
  2. 此代码段不使用AngularFire,而是直接使用Firebase JavaScript SDK。由于AngularFire是基于JavaScript SDK构建的,因此它们可以完美地互操作。因此,如果您需要在AngularFire中立即显而易见的操作,那么使用常规Firebase JavaScript SDK检查您是否可以(更轻松地)完成它可能是值得的。

答案 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中的捕获图像。

capture from my firebase database