# #node.js #firebase #google-cloud-functions #google-vision
Вопрос:
Я пытался продолжить Учебник. Чтобы изучить изображение при создании документа, вот информация о Firestore:
Изображение хранится в виде ссылки внутри этого документа в поле image_url.
Я создал облачную функцию, используя зависимость (модуль узла).:
«@google-облако/видение»: «^2.4.0»,
Мой индексный файл выглядит так:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import algoliasearch from 'algoliasearch';
import vision from '@google-cloud/vision';
const env = functions.config();
//Function to check Images on User Create.
exports.checkUserAvatarImage = functions.firestore.document('users/{uid}').onCreate(async (userSnap, context) => {
const content = userSnap.data();
if(content.startsWith("http")){
return (async () => {
const client = new vision.ImageAnnotatorClient();
const [result] = await client.safeSearchDetection(content);
var detections = result.safeSearchAnnotation;
if(detections?.adult == 'LIKELY' || detections?.adult == 'VERY_LIKELY' || detections?.adult == 'POSSIBLE'){
return userSnap.ref.update({
'image_url': 'https://firebasestorage.googleapis.com/v0/b/realstatestb-ad581.appspot.com/o/user_images/CasaVerde.png?alt=mediaamp;token=ae018b20-858c-4ead-a64a-1871b4e22652'
});
}
return;
})()
.then(() => {
return;
}).catch(err => console.log("An error has ocurred " err));
}
return;
});
Проблема в том, что когда я загружаю изображение контента для взрослых, оно не меняется на изображение, показанное в коде, однако, когда я проверяю функции входа в систему, всегда говорится, что оно начинается и заканчивается «Ок».
Есть какие-нибудь идеи?
Спасибо вам за любые указания.
Комментарии:
1. Привет @Рене, не могли бы вы, пожалуйста, дать нам вывод «detections.adult», если вы введете console.log(). Спасибо.
2. привет, сегодня у меня ошибка: checkUserAvatarImage {«@type»:»type.googleapis.com/google.cloud.audit. Журнал аудита»,»статус»:{«код»:3,»сообщение»:»Сбой функции при загрузке пользовательского кода. Вероятно, это связано с ошибкой в пользовательском коде. Сообщение об ошибке: Ошибка: пожалуйста, просмотрите журналы своих функций, чтобы узнать причину ошибки: cloud.google.com/functions/docs/monitoring/logging#viewing_logs . Дополнительную документацию по устранению неполадок можно найти по адресу cloud.google.com/functions/docs/troubleshooting#logging .
Ответ №1:
Эй, ребята, после ценного вклада Марка я понял, в чем проблема, проблема была не здесь, а в том, как я отправил данные в Firestore, так как при создании пользователя изображение еще не загружено.
Вот код:
case "Signup":
{
authResult = await _auth.createUserWithEmailAndPassword(
email: email,
password: password,
);
final ref = FirebaseStorage.instance
.ref()
.child('user_images')
.child(authResult.user.uid '.jpg');
await ref.putFile(image);
final url = await ref.getDownloadURL();
await FirebaseFirestore.instance
.collection('users')
.doc(authResult.user.uid)
.set({
'username': username,
'email': email,
'image_url': url,
'name': fullname,
'phone': 0,
}).then((_) => {
// Provider.of<UserProvider>(context, listen: false).getUserInfo(
// url, fullname, email, username, authResult.user.uid);
Navigator.of(context).pushNamed(ExploreSellScreen
.routeName) //NewMainScreen.routeName) //ListingOverviewScreen.routeName)
});
}
break;
Поэтому я думаю, что теперь мне нужно найти способ загрузить это в Create, а не в качестве обновления. Спасибо тем, кто прочитал этот вопрос, и извините за эту деталь.
Также, если у вас есть какие-либо предложения, пожалуйста, дайте мне знать.