我似乎无法将Firestore中的数据复制到阿尔及利亚

时间:2019-08-15 02:44:20

标签: firebase google-cloud-functions algolia

基本上,我正在尝试通过Firebase云功能将Firebase中已经存在的数据复制到Algolia中。该代码无法编译,我似乎也无法弄清楚为什么。

我使用的是打字稿,而不是javascript,并且正在此处关注此文章。 https://medium.com/@soares.rfarias/how-to-set-up-firestore-and-algolia-319fcf2c0d37 我也在VScode中工作

//这是我文件的顶部     const algoliasearch = require('algoliasearch')

const algoliaClient = 
algoliasearch(functions.config().algolia.appid, 
functions.config().algolia.apikey)

export const sendCollectionToAlgolia = 
functions.https.onRequest(async (req, res) => 
{
const collectionIndex = algoliaClient.initIndex('Organizations')
const db = admin.firestore()
const algoliaRecords = []

const querySnapshot = await db.collection("Organizations").get()

querySnapshot.docs.forEach(doc => {
        const document = doc.data()



        const record = {
            objectID: doc.id,
            "orgUsername": document.orgUsername,
            "orgName": document.orgName,
            "school": document.school

        }


        algoliaRecords.push(record)

})

collectionIndex.saveObjects(algoliaRecords, (_error: any, content: 
any) => {
    res.status(200).send("COLLECTION was indexed to Algolia 
successfully.");
})

})

我一直收到表示“变量'algoliaRecords'在某些无法确定其类型的位置隐式具有类型'any []'”的编译错误,并且我不知道如何解决它。我对阿尔及利亚比较陌生,但是已经开始使用云功能了。

1 个答案:

答案 0 :(得分:0)

发生这种情况是因为algoriaRecords没有显式类型。通常,TypeScript将根据您最终分配的内容来推断类型。但是,随后的每个algoriaRecords.push()操作都会根据添加到变量中的元素来扩展变量的类型。

对此的快速解决方案是通过为algoriaRecords明确指定类型,例如:

const algoriaRecords:Object[] = []

此外,您可以通过配置tsconfig.js文件并将noImplicitAny设置为false,同时删除严格的规则

,使TypeScript允许不声明任何类型的params,有关更多信息,请参见here
// "strict": true
"noImplicitAny" : false