gpt4 book ai didi

typescript - 如何使用带有 TypeScript 的云函数代码更新 Firestore 中的 map

转载 作者:行者123 更新时间:2023-12-04 02:47:58 26 4
gpt4 key购买 nike

我想使用在 Typescript 中输入的云函数更新 Firestore 中的 map ,所以我编写了这段代码,但它不起作用:

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

admin.initializeApp(functions.config().firebase);
exports.sendNote = functions.https.onCall(async(data,context)=>{
const numeroSender: string = data['numeroSender'];
const amisA = admin.firestore().collection('Amis').doc(numeroReceiver);
const connaissanceABBA:number = 3.0;
const version:number = 1;
await amisA.update({
'amis.${numeroSender}' : [connaissanceABBA,version]
});
});

编辑器没有用它的值替换 numeroSender,我也尝试过:

'amis.'+numeroSender

并且编辑器要求分号并显示许多其他错误。甚至我也尝试过这种方式:

const mapA: string = ("amis."+numeroSender);
console.log(mapA);
await amisA.update({
mapA : [connaissanceABBA,version]
});

控制台显示正确的字符串,但更新函数不读取 mapA 值,而是使用字符串 'mapA' 执行。

最佳答案

你可以这样做:

await amisA.update({
[`amis.${numeroSender}`] : [connaissanceABBA, version]
});

在 ES6 中(因此在 TypeScript 中也是如此)您可以使用 ComputedPropertyName,如语言规范所示:http://www.ecma-international.org/ecma-262/6.0/#sec-object-initializer


请注意,在 ES5 中,您必须使用方括号表示法执行以下操作:

var obj = {};
obj[`amis.${numeroSender}`] = [connaissanceABBA, version];
amisA.update(obj);

另请注意,这将按预期与 update() 一起工作方法,因为“字段可以包含点以引用文档中的嵌套字段”。但是,JavaScript 代码中生成的对象可能并不完全符合您的预期。你可以通过以下方式看到它:

var obj1 = {
[`amis.${numeroSender}`] : [connaissanceABBA, version]
}
console.log(JSON.stringify(obj1));

最后注意template literals由反引号括起来,例如:

`amis.${numeroSender}`

而不是:

'amis.${numeroSender}'

如您的问题所示。

关于typescript - 如何使用带有 TypeScript 的云函数代码更新 Firestore 中的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56519388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com