FIrebase:使用用户UID创建一个数据库,并使其仅在登录且UID相同时才可访问

时间:2019-09-02 07:41:07

标签: javascript firebase google-cloud-firestore

我需要帮助您了解如何创建数据库系统,以便每个用户都有自己的数据,我想确保在我从站点发送数据时,该数据以该顺序(集合名称)/(创建该数据的用户的uid)/(文件名由日期创建的日期#this我已经完成,我只需要了解保存语法的语法#)/最终数据即可。

有人可以通过写他将在js和数据库规则中写的内容来完成我上面写的内容来帮助我吗?

我搜索了许多教程,但是我看到的例子很少,我不能总是理解简单视频中的所有内容。

db.collection("preferenze").doc(salvataggioData).set({
    animale: animale
}).then(function() {
    console.log("Preferenza Salvata Con Successo")
}).catch(function(error) {
    console.log(error.message)
});

setTimeout(function() {
    location.reload()
}, 500);

1 个答案:

答案 0 :(得分:1)

如果要使用登录用户的uid创建文档,然后将数据作为字段传递,则必须这样做:

...

auth.onAuthStateChanged(function(user) {
    if (user) {
        userUid = user.uid;
        console.log(userUid);
        console.log("Loggato")
        costruzioneHtml(true);
        this.user = user;
    } else {
        console.log("Non Loggato")
        costruzioneHtml(false);
        userUid = "";
    }
  });

...

function invioPreferenza() {
    idDocumento = calcoloData();
    animale = document.getElementById("txtAnimale").value;

    db.collection("preferenze").doc(user.uid).set({
        animale: animale,
        name: user.displayName,
        email: user.email,
        ...
    }).then(function() {
        console.log("Preferenza Salvata Con Successo")
    }).catch(function(error) {
        console.log(error.message)
    });

    setTimeout(function() {
        location.reload()
    }, 500);
}

还可以查看Firebase的docs,了解如何开始使用Firebase身份验证,以获取有关如何使用auth()中的信息的更多信息。

编辑

我认为您的安全规则应如下所示,但我不确定100%:

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userID} {
        allow read, write: if request.auth.uid == userID;
    }
  } 
}