我如何在兼容模式下在 Angular/Fire 中使用 serverTimestamp

问题描述 投票:0回答:1

我已经尝试过了

import firebase from 'firebase/compat/app';
import 'firebase/compat/firestore';
const firestore = firebase.firestore;

this.form = this.builder.group({
      items:[data.items, null],
      dateReported:[firestore.FieldValue.serverTimestamp(), Validators.required],
    ....})

我收到此错误:

错误 FirebaseError:使用无效数据调用函数 WriteBatch.update()。不支持的字段值:自定义 sl 对象(在字段 dateReported 中找到)

{
    "items": [
        {
            "sku": "2756",
            "qty": 1,
            "name": "\tImpresora Artillery X3 Plus"
        }
    ],
    "dateReported": {
        "_methodName": "serverTimestamp"
    },
    "dateModified": {
        "_methodName": "serverTimestamp"
    },
    "trialsAndResults": "cable suelto",
    "inspectedItems": [
        {
            "sku": "2756",
            "qty": 1,
            "name": "\tImpresora Artillery X3 Plus",
            "dictum": "repair"
        }
    ],
    "status": "examined",
    "technician": "Cristobal",
    "charge": 0,
    "report": null
}

也尝试过

import { serverTimestamp } from 'firebase/firestore';
import { AngularFirestore } from '@angular/fire/compat/firestore';

constructor(private afs: AngularFirestore, ...) {
    this.form = this.builder.group({
        dateReported: [serverTimestamp(), Validators.required],
        ...
    });

    const batch = this.afs.firestore.batch();
    const orderRef = this.afs.firestore.collection(...).doc(....);
    batch.update(orderRef, this.form.value);
    batch.commit()
}

同样的错误

尝试过

import firebase  from 'firebase/compat/app';
dateReported:[firebase.firestore.FieldValue.serverTimestamp(), Validators.required],

错误类型错误:无法读取未定义的属性(读取“FieldValue”)

"@angular/compiler": "^17.3.0",
"@angular/core": "^17.3.0",
"@angular/fire": "^17.0.1",
"@angular/forms": "^17.3.0",
"@angular/material": "^17.2.2",
"firebase": "^9.23.0",
angular firebase google-cloud-firestore angularfire2
1个回答
0
投票

当您尝试访问的属性不存在或尚未初始化时,通常会发生此错误。所以我建议做的第一件事就是使用可选链。

[firebase?.firestore?.FieldValue?.serverTimestamp(), Validators.required]
© www.soinside.com 2019 - 2024. All rights reserved.