使用 $add angularfire 生成自定义密钥

generate custom key with $add 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

调用 $add 只会导致所谓的 push 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 来完成它可能是值得的。

在上面的 mester 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 post [=26] 中提到的=]Frank van Puffelen angularfire API 建立在 firebase API .

这是我从我的数据库 firebase 中捕获的图像。