Firestore 不支持具有自定义原型的 JavaScript 对象

编程代码Java

1个回答

写回答

a203881903

2025-07-09 17:28

+ 关注

Google
Google

Firestore 是一种云数据库服务,由 Google 提供。它被广泛应用于开发 Web 和移动应用程序,用于存储和同步数据。然而,需要注意的是,Firestore 不支持具有自定义原型的 JavaScript 对象。在本文中,我们将探讨这一限制并提供一些解决方案。

为什么 Firestore 不支持自定义原型的 JavaScript 对象?

Firestore 是一个文档数据库,它使用了一种称为"文档-集合"模型的数据结构。每个文档都是一个键值对的集合,类似于 JSON 对象。Firestore 通过将这些文档组织成集合的方式来存储和检索数据。

在 Firestore 中,数据以文档的形式存储,而不是以 JavaScript 对象的形式存储。这意味着 Firestore 不支持 JavaScript 对象的原型继承和方法。当我们将一个 JavaScript 对象保存到 Firestore 中时,它只会保存对象的属性,而不会保存对象的原型。

解决方案:将 JavaScript 对象转换为普通对象

为了在 Firestore 中保存 JavaScript 对象,我们需要将它转换为普通对象。这可以通过使用 JSON 序列化和反序列化来实现。

以下是一个示例代码,展示了如何将 JavaScript 对象转换为普通对象并保存到 Firestore 中:

Javascript

// 定义一个具有自定义原型的 JavaScript 对象

function Person(name, age) {

this.name = name;

this.age = age;

}

Person.prototype.greet = function() {

console.log("Hello, my name is " + this.name);

};

// 创建一个普通对象,以保存到 Firestore 中

var personData = {

name: "John",

age: 30

};

// 将 JavaScript 对象转换为普通对象

var plAInObject = JSON.parse(JSON.stringify(personData));

// 将普通对象保存到 Firestore 中

db.collection("people").doc("person1").set(plAInObject);

在上面的代码中,我们定义了一个具有自定义原型的 JavaScript 对象 Person。然后,我们创建了一个普通对象 personData,以保存到 Firestore 中。通过使用 JSON.stringify 和 JSON.parse,我们将 JavaScript 对象转换为普通对象 plAInObject。最后,我们使用 set 方法将普通对象保存到 Firestore 中。

尽管 Firestore 不支持具有自定义原型的 JavaScript 对象,但我们可以通过将 JavaScript 对象转换为普通对象来解决这个问题。这样,我们就可以在 Firestore 中保存和检索数据。请记住,在转换对象之后,我们将失去对象的原型继承和方法。因此,在使用 Firestore 存储数据时,确保只保存需要的属性,并在需要时手动处理对象的行为。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号