Firestore控制台日志输出中的意外行为

罗杰·金特

我决定进行从实时数据库到Firestore的过渡,但是我遇到了一些意外的问题。这很简单:浏览器控制台会注销极其出乎意料的结果,但是像现存的方法仍然可以按预期工作。

const firebase = require('firebase/app');
require('firebase/firestore');

const firebaseConfig = {
   the usual
};

firebase.initializeApp(firebaseConfig);

const firestore = firebase.firestore();

(async () => {
    const userRef = firestore.doc('users/fjafSAe2VQRWx7g9ocxn')
    const snapShot = await userRef.get();
    console.log(snapShot)
    console.log(snapShot.exists)
})()

现在console.log在浏览器中显示出一些我不明白的胡言乱语:

t {pf: e, w_: t, Nf: n, Ff: false, $f: false, …}
$f: false
Ff: false
Nf: n {key: t, version: t, nn: t, Ye: false, hasCommittedMutations: false}
m_: null
pf: e {cf: n, uf: e, hf: FirebaseAppImpl, lf: e, INTERNAL: {…}, …}
w_: t {path: n}
exists: (...)
id: (...)
metadata: (...)
ref: (...)
__proto__: Object

但是snapShot.exists可以按预期工作。甚至更奇怪的是,当我在Node.js中进行控制台登录时,它会输出DocumentSnapshot

DocumentSnapshot {
  _firestore:
   Firestore {
     _offlineComponentProvider:
      MultiTabOfflineComponentProvider { onlineComponentProvider: OnlineComponentProvider {} },
     _onlineComponentProvider: OnlineComponentProvider {},
     _firebaseApp:
      FirebaseAppImpl {
        firebase_: [Object],
        isDeleted_: false,
        name_: '[DEFAULT]',
        automaticDataCollectionEnabled_: false,
        options_: [Object],
        container: [ComponentContainer] },
     _queue:
      AsyncQueue {
        tail: [Promise],
        retryableOps: [],
        _isShuttingDown: false,
        delayedOperations: [Array],
        failure: null,
        operationInProgress: true,
        timerIdsToSkip: [],
        backoff: [ExponentialBackoff],
        visibilityHandler: [Function] },
     INTERNAL: { delete: [Function: delete] },
     _databaseId:
      DatabaseId { projectId: 'ecommerce-33931', database: '(default)' },
     _persistenceKey: '[DEFAULT]',
     _credentials:
      FirebaseCredentialsProvider {
        tokenListener: [Function],
        currentUser: [User],
        receivedInitialUser: true,
        tokenCounter: 1,
        changeListener: [Function],
        forceRefresh: false,
        auth: null },
     _settings:
      FirestoreSettings {
        host: 'firestore.googleapis.com',
        ssl: true,
        credentials: undefined,
        timestampsInSnapshots: true,
        ignoreUndefinedProperties: false,
        cacheSizeBytes: 41943040,
        experimentalForceLongPolling: false },
     _firestoreClient:
      FirestoreClient {
        credentials: [FirebaseCredentialsProvider],
        asyncQueue: [AsyncQueue],
        clientId: 'exM4ONFeK4q2tpdTjiyl',
        initializationDone: [Deferred],
        databaseInfo: [DatabaseInfo],
        persistence: [MemoryPersistence],
        sharedClientState: [MemorySharedClientState],
        localStore: [LocalStoreImpl],
        gcScheduler: null,
        datastore: [DatastoreImpl],
        remoteStore: [RemoteStoreImpl],
        syncEngine: [SyncEngineImpl],
        eventMgr: [EventManagerImpl] } },
  _key:
   DocumentKey { path: ResourcePath { segments: [Array], offset: 0, len: 2 } },
  _document:
   Document {
     key: DocumentKey { path: [ResourcePath] },
     version: SnapshotVersion { timestamp: [Timestamp] },
     objectValue: ObjectValue { proto: [Object] },
     hasLocalMutations: false,
     hasCommittedMutations: false },
  _fromCache: false,
  _hasPendingWrites: false,
  _converter: null }

但是,existing属性未在此处列出(但仍记录为true)。知道是什么原因造成的吗?我在React中工作,当它不起作用时,也可以在Node中尝试它。

道格·史蒂文森

您所看到的是DocumentSnapshot类型对象的默认字符串表示形式。以这种方式检查其内容实际上并没有多大意义,因为它是一个内部复杂的对象,它本身包含许多对其他对象的引用,这些对象也在此进行了字符串化。如果您想查看该快照中的文档数据,则只需在其上调用data()即可获得一个易于记录的简单JavaScript对象。

console.log(snapShot.data())

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

意外的BPython控制台输出行为

来自分类Dev

Jenkins文件系统中的“控制台输出”日志位置

来自分类Dev

控制台日志输出QtCreator中的错误字符

来自分类Dev

控制台日志不输出对象

来自分类Dev

如何更改代码以输出到控制台以及Powershell中的输出日志?

来自分类Dev

json阵列中的控制台日志

来自分类Dev

MongoDB Shell中的控制台日志

来自分类Dev

使用javascript中的控制台日志打印输出同一行

来自分类Dev

如何在Xamarin.iOS自己的应用程序中捕获控制台日志输出?

来自分类Dev

将Jenkins作业构建的日志文件/控制台输出存储在dreamhost中

来自分类Dev

播放Framework 2.2日志输出到测试中的控制台

来自分类Dev

如何抑制Web Inspector控制台日志中的chrome-extension://输出?

来自分类Dev

将Jenkins作业构建的日志文件/控制台输出存储在dreamhost中

来自分类Dev

如何在php和codeception中输出浏览器控制台日志

来自分类Dev

控制台输出中出现意外字符

来自分类Dev

eclipse控制台出现意外的中文输出

来自分类Dev

XmlWriter打印到控制台时输出意外的编码

来自分类Dev

eclipse控制台出现意外的中文输出

来自分类Dev

Eclipse控制台未显示任何错误/日志输出

来自分类Dev

控制台日志输出整个功能,而不是返回什么

来自分类Dev

Gradle控制台-获得更多日志输出

来自分类Dev

将robocopy输出写入控制台和日志文件

来自分类Dev

使用NaN输出到控制台日志的extraArgs

来自分类Dev

在控制台日志输出中转义单引号

来自分类Dev

在Android中将日志输出到控制台

来自分类Dev

django-将控制台输出到日志文件

来自分类Dev

将robocopy输出写入控制台和日志文件

来自分类Dev

将结果输出到日志文件而不是控制台

来自分类Dev

在PowerShell中禁止控制台输出

Related 相关文章

  1. 1

    意外的BPython控制台输出行为

  2. 2

    Jenkins文件系统中的“控制台输出”日志位置

  3. 3

    控制台日志输出QtCreator中的错误字符

  4. 4

    控制台日志不输出对象

  5. 5

    如何更改代码以输出到控制台以及Powershell中的输出日志?

  6. 6

    json阵列中的控制台日志

  7. 7

    MongoDB Shell中的控制台日志

  8. 8

    使用javascript中的控制台日志打印输出同一行

  9. 9

    如何在Xamarin.iOS自己的应用程序中捕获控制台日志输出?

  10. 10

    将Jenkins作业构建的日志文件/控制台输出存储在dreamhost中

  11. 11

    播放Framework 2.2日志输出到测试中的控制台

  12. 12

    如何抑制Web Inspector控制台日志中的chrome-extension://输出?

  13. 13

    将Jenkins作业构建的日志文件/控制台输出存储在dreamhost中

  14. 14

    如何在php和codeception中输出浏览器控制台日志

  15. 15

    控制台输出中出现意外字符

  16. 16

    eclipse控制台出现意外的中文输出

  17. 17

    XmlWriter打印到控制台时输出意外的编码

  18. 18

    eclipse控制台出现意外的中文输出

  19. 19

    Eclipse控制台未显示任何错误/日志输出

  20. 20

    控制台日志输出整个功能,而不是返回什么

  21. 21

    Gradle控制台-获得更多日志输出

  22. 22

    将robocopy输出写入控制台和日志文件

  23. 23

    使用NaN输出到控制台日志的extraArgs

  24. 24

    在控制台日志输出中转义单引号

  25. 25

    在Android中将日志输出到控制台

  26. 26

    django-将控制台输出到日志文件

  27. 27

    将robocopy输出写入控制台和日志文件

  28. 28

    将结果输出到日志文件而不是控制台

  29. 29

    在PowerShell中禁止控制台输出

热门标签

归档