【发布时间】: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