【问题标题】:Using Firebase Authentication UID in Firestore for document ID causing problems in website在 Firestore 中使用 Firebase 身份验证 UID 获取文档 ID,导致网站出现问题
【发布时间】:2021-03-19 13:08:36
【问题描述】:

在我的网站上,我有一个表格,其中列出了我的所有用户,我可以在其中编辑他们的个人资料。

我遇到的麻烦是只有一些用户允许我编辑他们的详细信息。我注意到问题只发生在我的 Firestore 中用户的文档 ID 以数字开头,例如 4lbkdHe2hIRmM9Z6IIQTtndbmH23。其他在 ID 开头有字母的用户可以正常工作。文档 ID 是根据身份验证中的 UID 生成的。

要编辑用户,调用包含该表行的文档 ID 的 onclick 函数。我尝试将 ID 设为字符串,但没有成功。

要创建的表的代码。

function getAllUser(){
var docRef = db.collection("users");
docRef.get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {

   html = createJobRow(doc.data(),doc.id);
    $('.jobsTable').find('tbody').append(html);

});
jobsDataTable = $('.jobsTable').DataTable({"order": [[ 1, "desc" ]], language: { search: "", searchPlaceholder: "Search...", sLengthMenu: "_MENU_" }, "lengthMenu": [[30, 50, 100, -1], [30, 50, 100, "All"]] });
  });
 }

function createJobRow(user,id)
{
if(user['role']=='user' )
{

// var user_id = id.toString();

html = '<tr id="'+id+'">';
html += '  <td class="centercheck"><input type="checkbox" class="select-item checkbox selectitem" name="selectitem" id="selectitem" value="'+id+'"/></td>'; 
html += '  <td class="centercheck">'+id+'</td>';
html += '  <td class="centercheck">'+user['name']+'</td>';
html += '  <td class="centercheck">'+user['company']+'</td>';
html += '  <td class="centercheck">'+user['email']+'</td>';
html += '  <td class="centercheck">'+user['trade']+'</td>';
html += '  <td class="centercheck">'+user['isApproved']+'</td>';
html += '<td class="centercheck"><button type="button" onclick="editInvoice('+id+')" class="btn center-btn"><i class="fa fa-edit"></i></button>';
html += '<button type="button" onclick="editJob('+id+')" class="btn btn-box-tool"><i class="fa fa-user-edit"></i></button></td>';
html += '</tr>';
return html;

}
else {
return null;
}

}

编辑作业的 Onclick 功能

function editJob(id,user){


var userID = id;
var tableUser = $(userID).find("td:eq(1)").text();
  console.log(tableUser)
  console.log(userID)
    var docRef = db.collection("users").doc(tableUser).get().then(function(doc) {
        if (doc.exists) {
            showModalData(doc.data(),id);
        } else {
            // doc.data() will be undefined in this case
            console.log("No such document!");
        }
    }).catch(function(error) {
        console.log("Error getting document:", error);
    });
    }

显示用户资料的模式

function showModalData(user,id){

    var userID = id;
    var tableUser = $(userID).find("td:eq(1)").text();


       // console.log(user)

    $('#jobForm')[0].reset();
    modal = $('#jobsAddEditModal');
    modal.find('.modal-title').html('Edit Profile');
    modal.find('.submit-btn').html('Update Profile');
    modal.find('#userid').val(tableUser);
    modal.find('#company').val(user['company']);
    modal.find('#email').val(user['email']);
    modal.find('#expo_token').val(user['expo_token']);
    modal.find('#name').val(user['name']);
    modal.find('#trade').val(user['trade']);
    modal.find('#insurancedocs');

    $('#jobsAddEditModal').modal('show');

  }

控制台中的错误是 (index):1 Uncaught SyntaxError: Invalid or unexpected token

【问题讨论】:

  • 我已经解决了这个问题会回答这个问题,以防万一有人遇到同样的问题。

标签: javascript html google-cloud-firestore firebase-authentication


【解决方案1】:

我通过将 ID 添加到我的按钮然后将文档 ID 添加到该 ID 来解决此问题。

html += '<button type="button" id="'+id+'" onclick="editJob(this.id)" class="btn btn-box-tool"><i class="fa fa-user-edit"></i></button></td>';

【讨论】:

    猜你喜欢
    • 2018-04-29
    • 2021-06-23
    • 2019-01-27
    • 2019-04-18
    • 2018-07-21
    • 2019-07-17
    • 2018-03-19
    • 2020-11-16
    • 1970-01-01
    相关资源
    最近更新 更多