首页 > 解决方案 > 错误:参数“value”的值不是有效的查询约束。不能将“未定义”用作 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);

标签: javascriptnode.jsfirebasegoogle-cloud-firestore

解决方案


问题是,在您的模块中,就在导出之前,您在mailEvents()没有任何参数的情况下调用该函数,因此出现错误“不能将“未定义”用作 Firestore 值”,因为它试图以未定义的形式查询startTime集合endTime。换句话说,每次您需要此文件时,您实际上是在调用该方法两次。您还可以在此处简化几行。如果您将该文件更改为以下内容,它应该可以工作:

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
};

推荐阅读