【问题标题】:How to create a new table inserting a variable into .doc()如何创建一个将变量插入 .doc() 的新表
【发布时间】:2022-02-08 21:37:56
【问题描述】:

我创建了一个登录页面,该页面使用document.getElementByClassName 将其数据分配到变量上。 因此,我尝试使用此人的姓名在 Firebase 上创建一个新文档,并使用 -- .doc(variableHere) 存储在一个变量中(这可能会带来一些问题),但我没有找到方法。

let newUserPrimeiroNome = document.getElementsByClassName("primeiroNome");
let newUserSobrenome = document.getElementsByClassName("ultimoNome");
let newUserEmail = document.getElementsByClassName("email");
let newUserPassword = document.getElementsByClassName("senha");

let btn = document.getElementById("btn");
btn.addEventListener("click", criaNovoUsuario);

function criaNovoUsuario() {
        db.collection("loginsSecretaria").doc(newUserPrimeiroNome) // <- error here
        .add({
            primeiroNome: newUserPrimeiroNome[0].value,
            ultimoNome: newUserSobrenome[0].value,
            email: newUserEmail[0].value,
            senha: newUserPassword[0].value
        }).then(() => {
            console.log("Documento inserido com sucesso");
        }).catch((error) => {
            console.log("Erro ao inserir documento: ", error);
        });
}

ps.:如果我表达的不够清楚,我很抱歉

【问题讨论】:

  • 我找到了使用 .doc(${newUserEmail[0].value}) 的解决方案

标签: javascript node.js firebase google-cloud-firestore


【解决方案1】:

只要变量是字符串(不是对象/数组)并且不匹配任何约束documented by Google,任何变量都应该可以工作。您的问题是您正在调用getElementsByClassName,它返回一个元素数组。你需要第一个元素的值,可以通过newUserPrimeiroNome[0].value...

但是,请注意,使用 名字 作为 ID 可能不是最好的方法,因为它不太可能是唯一的。例如,两个用户可能都有名称 John,然后您就不会有他们每个人的唯一文档...您可能还想在尝试使用之前进行一些数据验证用户创建的输入作为文档 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多