Rac*_*lla 9 firebase react-native google-cloud-firestore
我正在尝试将用户连接到 firestore 中的用户集合。我正在使用云功能,但我认为我没有正确实施它。
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(() => {
console.log('user created')
exports.createUserDoc = functions.auth.user().onCreate((user) => {
console.log("hi")
const userId = user.uid;
const account = {
posts: []
}
return admin.firestore().collection("Users").doc(userId).add(account)
})
Run Code Online (Sandbox Code Playgroud)
但是我的 console.log(hi) 没有出现。我正确地接近这个吗?任何建议都有帮助!
小智 7
现在我所做的是当用户创建一个帐户时,我会将登录信息记录到数据库中。
文档名称设置为 firebase 为用户提供的用户 UID。现在您可以简单地从数据库中请求数据,并将用户 UID 作为您的.doc(user.uid).
这是完整的代码。
var htmlEmail = document.getElementById('email').value;
var htmlPass = document.getElementById('password').value;
var htmlUser = document.getElementById('username').value.toLowerCase();
var auth = firebase.auth();
var promise = auth.createUserWithEmailAndPassword(htmlEmail, htmlPass);
// If there is any error stop the process.
promise.catch(function (error) {
var errorCode = error.code;
console.log(`GOT ERROR: ` + errorCode)
if (errorCode == 'auth/weak-password') return // password to weak. Minimal 6 characters
if (errorCode == 'auth/email-already-in-use') return // Return a email already in use error
});
// When no errors create the account
promise.then(function () {
var userUid = auth.currentUser.uid;
var db = firebase.firestore();
db.collection('users').doc(userUid).set({
email: htmlEmail,
emailVertified: false,
name: htmlUser,
online: false,
onlock: false,
password: htmlPass
});
Run Code Online (Sandbox Code Playgroud)
然后当用户登录时,您可以简单地通过 user.uid 请求数据。
var auth = firebase.auth();
firebase.auth().onAuthStateChanged(function (user) {
// Lay connection with the database.
var firestore = firebase.firestore();
var db = firestore.collection('users').doc(user.uid);
// Get the user data from the database.
db.get().then(function (db) {
// Catch error if exists.
promise.catch(function (error) {
// Return error
});
promise.then(function () {
// continue when success
});
});
});
Run Code Online (Sandbox Code Playgroud)
可能只是有更好的方法。(还在学习自己)。但这对我有用,而且效果很好。
有2件事要记住!
希望能帮助到你 :)
如果您自己找到更好的方法,请在这里告诉我们。我们也可以从中学习!
| 归档时间: |
|
| 查看次数: |
10376 次 |
| 最近记录: |