错误:参数“值”的值不是有效的查询约束。无法使用“未定义”作为Firestore值

时间:2019-12-27 19:31:41

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

当我从文件A导出模块并导入文件B时,以及运行文件B时,出现此错误。与Firebase云Firestore有关。

const mailEvents = (startTime, endTime) => {

  serverRef = db.collection("MailEvents");
  let getDocs = serverRef
    .where("timestamp", ">=", startTime)
    .where("timestamp", "<=", endTime)
    .get()
    .then(querySnapshot => {
      if (querySnapshot) {
        let docs = querySnapshot.docs.map(doc => doc.data());
        console.log(docs)
      }
    });
}
mailEvents();
module.exports.mailEvents = mailEvents;

并且main.js文件是

const module = require('./report.js')

module.mailEvents(1575225929,1575305012);

1 个答案:

答案 0 :(得分:1)

问题在于,在模块中,在导出之前,您调用了mailEvents()函数而没有任何参数,因此出现错误“无法使用“ undefined”作为Firestore值”,因为它试图查询集合startTimeendTime为未定义。换句话说,每次您需要此文件时,您实际上都在两次调用该方法。您还可以在此处简化几行。如果您将该文件更改为此,它应该起作用:

const mailEvents = (startTime, endTime) => {
    db.collection("MailEvents")
        .where("timestamp", ">=", startTime)
        .where("timestamp", "<=", endTime)
        .get()
        .then(querySnapshot => {
            if (querySnapshot && querySnapshot.length > 0) {
                let docs = querySnapshot.docs.map(doc => doc.data());
                console.log(docs)
            }
        });
};

module.exports = {
    mailEvents
};