使用$ add angularfire生成自定义键

Nej*_*eli 1 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
Run Code Online (Sandbox Code Playgroud)

仍然使用$ add函数获得随机密钥

Fra*_*len 7

通话$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);
Run Code Online (Sandbox Code Playgroud)

这里有两点需要注意:

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