0

Firestoreで新しい文書が作成されるたびにAlgolia Searchインデックスを更新するクラウド機能を導入しようとしています。すべてがうまく始まると思われますが、最後にエラーが発生します。私はドキュメントを読んできましたが、構文が正しいように感じるので、この時点で何をすべきか分かりません。クラウド機能は、何を指していませんログインして、ちょうど私がエラーコレクションの名前にスペースを含むFirestore関数を展開する

エラーメッセージの下に受信したエラーエコー:

=== Deploying to 'test-ffdbb'... 

i deploying functions 
i functions: ensuring necessary APIs are enabled... 
i runtimeconfig: ensuring necessary APIs are enabled... 
+ runtimeconfig: all necessary APIs are enabled 
+ functions: all necessary APIs are enabled 
i functions: preparing functions directory for uploading... 
i functions: packaged functions (1.25 KB) for uploading 
+ functions: functions folder uploaded successfully 
i functions: updating function onProductCreated... 
! functions[onProductCreated]: Deployment error. 
Failed to configure trigger providers/cloud.firestore/eventTypes/[email protected] (onProductCreated) 

マイコード:

const functions = require('firebase-functions'); 
const algoliasearch = require('algoliasearch'); 

// App ID and API Key are stored in functions config variables 
const ALGOLIA_ID = functions.config().algolia.app_id; 
const ALGOLIA_ADMIN_KEY = functions.config().algolia.api_key; 

const ALGOLIA_INDEX_NAME = "Firestore"; 
const client = algoliasearch(ALGOLIA_ID, ALGOLIA_ADMIN_KEY); 

// Update the search index every time a blog post is written. 
exports.onProductCreated = functions.firestore 
.document("Product Catalog/{id}") 
.onCreate(event => { 
    const product = event.data.data(); 
    product.objectID = event.params.postId; 

    const index = client.initIndex(ALGOLIA_INDEX_NAME); 
    return index.saveObject(product); 
}); 

パッケージを。 json

{ 
    "name": "functions", 
    "description": "Cloud Functions for Firebase", 
    "scripts": { 
    "serve": "firebase serve --only functions", 
    "shell": "firebase experimental:functions:shell", 
    "start": "npm run shell", 
    "deploy": "firebase deploy --only functions", 
    "logs": "firebase functions:log" 
    }, 
    "dependencies": { 
    "@google-cloud/firestore": "^0.8.2", 
    "algoliasearch": "^3.24.5", 
    "firebase-admin": "~5.4.2", 
    "firebase-functions": "^0.7.1" 
    }, 
    "private": true 
} 

答えて

2

問題はパスセグメントProduct Catalogのスペースのようです。私はそれを削除すると、機能が正常にデプロイします。

exports.onProductCreated = functions.firestore 
    .document("ProductCatalog/{id}") // <== space removed 
    .onCreate(event => {...}); 

はまた、あなたのパスにワイルドカードがidで、コードの中であなたがpostIdを参照することに注意してください:

product.objectID = event.params.postId; 
+0

私のFirestoreでは、「Product Catalog」というタイトルのコレクションがあります。そのため、私はそれをそのように参照しています。あなたがコンソールでそれを行うことはできますが、あなたはそれを逆に参照することはできません。関数はデプロイされましたが、実行されていないので、{id}と関係があると思います。私はそれを個別にトラブルシューティングします。助けてくれてありがとう! – RomeNYRR

+0

私のパスには「/」がありませんでした。この答えは正しい方向に向いています。 – Doug

+0

また、誤ってドキュメントパスからオブジェクトのコレクションまたはプロパティを参照しようとすると、同じエラーがスローされます。 – Doug

0

私は、これはバグであると考えていFirebase CLIの展開コレクションIDとドキュメントIDのスペースは、Firestoreでは完全に有効です。スペースがあれば展開は失敗しません。私はこれにFirebaseチームと内部的にバグを記録しました。あなた自身がバグのように思えるものを自由にログに記録してください。at this page

関連する問題