Firebase云功能-评估用户是否已注册



假设我有一个名为people的集合,的每个文档都有一个属性名phone_number

当然,我可以允许用户注册,如果他的电话号码存在,我可能会认为他是有效的。但是,如果用户在我之前提到的任何文件中都没有电话号码,我从一开始就不想让他注册。

只有当文档中存在用户的电话号码时,我才能告诉Firebase允许用户注册?在另一个后端(如nest(,我会创建一个管道,简单地检查请求中给定的电话号码是否存在。

如果我正确理解您的要求,您应该通过Admin SDK进行查询,检查您的集合中是否有具有此电话号码的人员文档。

因此,如果我假设您将使用HTTPS云函数,那么以下几行应该可以做到这一点。它应该很容易适应其他云功能触发器。

exports.registerUser = functions.https.onRequest((req, res) => {
const phone_number = req.body.phone_number;
const peopleCollecRef = admin.firestore().collection('people');
peopleCollecRef
.where('phone_number', '==', phone_number)
.get()
.then(querySnapshot => {
if (querySnapshot.size === 1) {
return admin.auth().createUser({
email: req.body.email,
emailVerified: false,
phoneNumber: phone_number,
password: '....'
});
} else {
throw new Error('No user (or more than one user) with corresponding phone number ');
}
})
.then(userRecord => {
res.send({ result: 'user created with id: ' + userRecord.uid }); //Just an example
})
.catch(error => {
res.status(500).send(error);
});
});

您可能还应该标记用户何时注册,以避免该电话号码被另一用户下次使用。根据您的数据模型,可能会在云功能中执行一些检查。

最新更新