का उपयोग करके छवि को हटाने में समस्याएं मैं फ़ायरबेस के लिए क्लाउड फ़ंक्शंस में एक स्क्रिप्ट बनाने की कोशिश कर रहा हूं जो एक डीबी ईवेंट पर प्रतिक्रिया करेगा और उस छवि को हटा देगा जिसमें उसका पथ है पैराम्स ("फुलपाथ")।फ़ायरबेस के लिए क्लाउड फ़ंक्शंस और @ google-cloud/storage
'use strict';
const functions = require('firebase-functions');
const request = require('request-promise');
const admin = require('firebase-admin');
const gcs = require('@google-cloud/storage')({
projectId: 'XXXXXXX',
credentials: {
// removed actual credentials from here
}});
admin.initializeApp(functions.config().firebase);
// Deletes the user data in the Realtime Datastore when the accounts are deleted.
exports.removeImageOnNodeRemoval = functions.database
.ref("images/{imageId}")
.onWrite(function (event) {
// exit if we are creating a new record (when no previous data exists)
if (!event.data.previous.exists()) {
console.log("a new image added");
return;
}
// exit if we are just trying to update the image
if (event.data.exists()) {
console.log("image is been modified");
return;
}
let previousData = event.data.previous.val();
if(!previousData || !previousData.fullPath){
console.log("no data in the previous");
return;
}
let bucketName = 'XXXXXXX';
console.log("default bucketName", gcs.bucket(bucketName));
let file = gcs.bucket(bucketName).file(previousData.fullPath);
console.log('the file /'+previousData.fullPath, file);
file.exists().then(function(data) {
let exists = data[0];
console.info("file exists", exists);
});
file.delete().then(function() {
// File deleted successfully
console.log("image removed from project", previousData.fullPath);
}).catch(function(error) {
// Uh-oh, an error occurred!
console.error("failed removing image from project", error, previousData);
});
});
त्रुटि मैं हो रही है::
इसकोड मैं का उपयोग कर रहा है
failed removing image from project { ApiError: Not Found
at Object.parseHttpRespBody (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/src/util.js:192:30)
at Object.handleResp (/user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/src/util.js:132:18)
at /user_code/node_modules/@google-cloud/storage/node_modules/@google-cloud/common/src/util.js:465:12
at Request.onResponse [as _callback] (/user_code/node_modules/@google-cloud/storage/node_modules/retry-request/index.js:120:7)
at Request.self.callback (/user_code/node_modules/@google-cloud/storage/node_modules/request/request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (/user_code/node_modules/@google-cloud/storage/node_modules/request/request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (/user_code/node_modules/@google-cloud/storage/node_modules/request/request.js:1091:12)
at IncomingMessage.g (events.js:291:16)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:185:7)
at endReadableNT (_stream_readable.js:974:12)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickDomainCallback (internal/process/next_tick.js:122:9)
code: 404,
errors: [ { domain: 'global', reason: 'notFound', message: 'Not Found' } ],
response: undefined,
message: 'Not Found' } { contentType: 'image/png',
fullPath: 'images/1491162408464hznsjdt6oaqtqmukrzfr.png',
name: '1491162408464hznsjdt6oaqtqmukrzfr.png',
size: '44.0 KB',
timeCreated: '2017-04-02T19:46:48.855Z',
updated: '2017-04-02T19:46:48.855Z' }
मैं के साथ और साख google-क्लाउड पर/भंडारण (वे बिना सोचे की कोशिश की है फायरबेस में काम करते समय ऑटो भर सकता है। कार्य - क्या मुझे उनकी ज़रूरत है?)। मैंने फ़ाइल के पथ में एक स्लैश जोड़ने का प्रयास किया है। मैंने मान्य किया है कि फ़ाइल वास्तव में बाल्टी में मौजूद है (यहां तक कि file.exists() भी झूठी रिटर्न)। मेरे द्वारा प्रदान किए गए प्रमाण-पत्र एक Iam के लिए हैं जिन्हें मैंने स्टोरेज सेवा के लिए व्यवस्थापकीय विशेषाधिकारों के साथ बनाया है।
मैंने निःशुल्क योजना पर बिलिंग खाता भी सक्षम कर दिया है।
कोई विचार?