热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无法使用时间戳从Firebase获取数据情况1.仅使用客户端SDK案例2。仅使用服务器SDK案例3。混合SDK

我正在尝试使用createdAt属性(它是一个时间戳)从我的集合中获取一个值

我正在尝试使用createdAt属性(它是一个时间戳)从我的集合中获取一个值。
这大致就是我的查询的样子:

function getDataFromYesterdayToNow (db){
const now = new Date()
const yesterday = new Date(now.setDate(now.getDate() - 1))
yesterday.setHours(0,0)
const { Timestamp } = firebase.firestore
return db
.collection('myData')
.where('createdAt','>=',Timestamp.fromDate(yesterday))
.where('createdAt','<=',Timestamp.fromDate(now))
.get()
}

但是,当我运行它时,出现以下错误:


  

错误为'FirebaseError:[code = invalid-argument]:函数Query.where()用无效数据调用。不支持的字段值:自定义时间戳对象。 Stacktrace是'FirebaseError:函数Query.where()用无效数据调用。不支持的字段值:自定义的时间戳记对象

我很困惑,我一直在使用其他集合中的Timestamp对象来获取数据,如果我尝试仅使用date对象,它将无法正常工作。我忘记了什么吗?

编辑:根据要求,以下是我的文档的示例:

{
name: "My Data Name",// (string)
createdAt: November 9,2018 at 8:40:45 PM // (Timestamp)
}


我有同样的问题。您需要检查两件事。

1。我在使用正确的SDK吗?

您知道您可以使用两种不同的firebase SDK吗?一个是客户端SDK (firebase-js-sdk,又名firebase包),另一个是firebase 服务器SDK (nodejs-firestore。aka @google-cloud/firebase包)。这两个库在firestore.Timestamp类上有自己的实现,并且它们不兼容

一些其他NPM软件包的依赖关系如下:

"@firebase/firestore" (*)
-> "firebase" (client SDK which imports all @firebase/* except @firebase/testing)
-> "@angular/fire" (and other client libraries with firebase binding)
-> "@firebase/testing" (mocking Firestore client)
"@google-cloud/firebase" (*) (server SDK)
-> "firebase-admin"
-> "firebase-functions-test"

(*)表示firestore.Timestamp定义的位置。

简而言之,您应该使用相应的时间戳记。

情况1.仅使用客户端SDK

import { firestore,initializeApp } from 'firebase';
import { config } from './my-firebase-config';
const app = initializeApp(config);
app.firestore().collection('users')
.where('createdAt','<=',firestore.Timestamp.fromDate(new Date()))
.get();

案例2。仅使用服务器SDK

import { firestore,initializeApp } from 'firebase-admin';
const app = initializeApp();
app.firestore().collection('users')
.where('createdAt',firestore.Timestamp.fromDate(new Date()))
.get();

案例3。混合SDK

有时候,当您测试在服务器上运行的代码(例如firebase函数)时,需要使用客户端SDK(特别是@firebase/testing

// server.ts
import { firestore,fs.Timestamp.fromDate(new Date()))
.get();

// server.test.ts
import { firestore } from 'firebase';
import { initializeAdminApp } from '@firebase/testing';
// Replace server sdk with client sdk
jest.mock('firebase-admin',() => ({
firestore,initializeApp: () => initializeAdminApp()
}));

2。我使用的版本正确吗?

如果您使用的是正确的SDK,那么接下来要检查的是您是否使用了相同版本的Timestamp实现。例如,如果您使用的是Client SDK,则应检查package-lock.json是否具有唯一版本的firebase

对于我来说,我在不同的时间安装了@firebase/testingfirebase,并且由于firebase@firebase/testing的版本依赖性不同,所以我有两个不同的{{ 1}}软件包同时安装。您可以更新旧软件包来解决此问题。


推荐阅读
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文最初发表在Thorben Janssen的Java EE博客上,每周都会分享最新的Java新闻和动态。 ... [详细]
  • 重要知识点有:函数参数默许值、盈余参数、扩大运算符、new.target属性、块级函数、箭头函数以及尾挪用优化《深切明白ES6》笔记目次函数的默许参数在ES5中,我们给函数传参数, ... [详细]
  • 本指南介绍了如何在ASP.NET Web应用程序中利用C#和JavaScript实现基于指纹识别的登录系统。通过集成指纹识别技术,用户无需输入传统的登录ID即可完成身份验证,从而提升用户体验和安全性。我们将详细探讨如何配置和部署这一功能,确保系统的稳定性和可靠性。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • Vue应用预渲染技术详解与实践 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 将JavaScript文件嵌入HTML文档是Web开发中的基本操作。常见的方法是通过在HTML文件中使用``标签来引用外部的.js文件。这种方法不仅保持了代码的整洁性,还便于管理和维护。此外,还可以利用模块化脚本和异步加载技术进一步提升页面性能。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • 深入解析:React与Webpack配置进阶指南(第二部分)
    在本篇进阶指南的第二部分中,我们将继续探讨 React 与 Webpack 的高级配置技巧。通过实际案例,我们将展示如何使用 React 和 Webpack 构建一个简单的 Todo 应用程序,具体包括 `TodoApp.js` 文件中的代码实现,如导入 React 和自定义组件 `TodoList`。此外,我们还将深入讲解 Webpack 配置文件的优化方法,以提升开发效率和应用性能。 ... [详细]
  • 本文详细介绍了在 Vue.js 前端框架中集成 vue-i18n 插件以实现多语言支持的方法。通过具体的配置步骤和示例代码,帮助开发者快速掌握如何在项目中实现国际化功能,提升用户体验。同时,文章还探讨了常见的多语言切换问题及解决方案,为开发人员提供了实用的参考。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
author-avatar
哈哈1991188
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有