我用节点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?有可能吗?。
答案 0 :(得分:0)
您可以将其实现为update。使用有效负载进行更新,如:
{
'old_id': null,
'new_id': {
...
}
}
但我强烈建议你重新考虑这个设计。在大多数系统中,更改条目的唯一ID并不是一个好主意。看看你是否可以使uid成为原始条目的子属性。
答案 1 :(得分:0)
如果您不喜欢自动生成的ID,则下一个选项是自己创建一个唯一的ID并保存。然而,在我看来这是冒险的,我认为绝对没有理由在你的情况下这样做。
尝试更改唯一ID是一个坏主意,因为您正在破坏数据关系(是的我知道它不像MySQL等,但仍然,我们使用此ID来唯一标识用户并查找相关记录保存在其他表中)。