如何将.push发送的firebase唯一ID更新为来自auth的UID

时间:2017-12-20 05:37:43

标签: node.js firebase-admin

我用节点js和firebase创建了一个注册函数。这是我的脚本。

    var admin = require('./../config/firebase-admin');
    var database = admin.database();
    var express = require('express');
    var router = express.Router();
    var _ = require('underscore');
    var fillable = {
        // fbId: "",
        firstName: "",
        middleName: "",
        lastName: "",
        birthdate: "",
        gender: "",
        address: "",
        email: "",
        phone: "",
        password: "",
        imageUrl: "",
        token: "",
        createdAt: "",
        updatedAt: "",

    };
        router.post('/client', (req, res) => {
            var ref = database.ref('clients');


            var body = _.pick(_.assign(fillable, req.body), _.keys(fillable));

            body['createdAt'] = moment().format('YYYY-MM-DD HH:mm:ss');
            ref.push(body);

            res.json(
                        {
                         "messages": [
                           {"text": "You are now registered as Client."}
                         ]
                        }
                    );
        });

这很好....但是当我使用.push时,它会自动生成id ..

现在我的问题是有没有可能更新.push生成的唯一ID,因为我试图做的是当用户注册页面时它会将数据保存到firebase。然后,一旦用户使用该应用程序并输入他/她的电话号码进行身份验证,UID将是唯一的ID而不是自动生成的ID?有可能吗?。

2 个答案:

答案 0 :(得分:0)

您可以将其实现为update。使用有效负载进行更新,如:

{
  'old_id': null,
  'new_id': {
    ...
  }
}

但我强烈建议你重新考虑这个设计。在大多数系统中,更改条目的唯一ID并不是一个好主意。看看你是否可以使uid成为原始条目的子属性。

答案 1 :(得分:0)

如果您不喜欢自动生成的ID,则下一个选项是自己创建一个唯一的ID并保存。然而,在我看来这是冒险的,我认为绝对没有理由在你的情况下这样做。

尝试更改唯一ID是一个坏主意,因为您正在破坏数据关系(是的我知道它不像MySQL等,但仍然,我们使用此ID来唯一标识用户并查找相关记录保存在其他表中)。