Я написал очень простой c API, который будет возвращать услуги. Я попытался запустить этот API в эмуляторе, но он возвращает пустые данные
{
"status": "success",
"statusCode": 200,
"message": "Services retrieved",
"data": []
}
Я настроил firestore, функции и эмуляторы базы данных. И я использую
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.6.0"
Любая идея, почему ответ данных пуст?
РЕДАКТИРОВАТЬ
Это мой метод для вызова службы
export const activeServices = functions.https.onRequest((request, response) => {
let services = new Array<string>();
admin.firestore().collection(newServices).get()
.then(serviceSnapshot => {
serviceSnapshot.docs.forEach(doc => {
if(doc.data().service_active){
services.push(doc.data().service_name)
}
})
const successResponse = common.success("success", 200, "Services retrieved", services)
response.send(successResponse)
})
.catch(error => {
const errorResponse = common.error("fail", 500, "Failed to get active services")
console.error(errorResponse)
response.send(errorResponse)
})
})
Я попытался выполнить это, и он ничего не возвращал и выполнил те же функции после развертывания. И я получил ответ. Из приведенных ниже ответов я думаю, что при запуске только функций будет пытаться связаться с производственной базой данных.
firebase emulators:start --only functions
functions: The Cloud Firestore emulator is not running, so calls to Firestore will affect production.
⚠ External network resource requested!
- URL: "http://xxx.xxx.xxx.xxx/computeMetadata/v1/instance"
- Be careful, this may be a production service.
⚠ External network resource requested!
- URL: "http://metadata.google.internal./computeMetadata/v1/instance"
- Be careful, this may be a production service.
Похоже, что он пытается связаться с производственной, но не может выполнить ни одного успешного запроса.