Upload file to google-cloud
2- Create google-cloud account
"google-cloud": {
"projectId": "THIS IS THE PROJECT NAME",
"bucket": "THE BOCKET NAME",
"keyFilename": "../src/secret-files/google-key.json",
"signedUrlExpires" : 900
},
"feathers-mongoose-casl": {
"uploads": {
"services": {
"s3": false,
"local-private": true,
"local-public": true,
"google-cloud": true // This need to be true
}
....
5- Update upload middleware configuration
app.use('/organizations-files',
uploadMiddleware({
app,
fileKeyName: 'file',
serviceName: 'YOUR_SERVICE_NAME',
storageService: STORAGE_TYPES['google-cloud'], // That's the change we made
publicAcl: false,
// mimetypes: ['image/png','image/jpeg'] // optional
}),
createService(options)
);
6- Update service validators
const {Joi, enums} = require('feathers-mongoose-casl');
const getJoiObject = function(withRequired) {
const required = withRequired ? 'required' : 'optional';
return Joi.object({
storage: Joi.string().valid(
enums.STORAGE_TYPES['google-cloud'], //We need to add this line
enums.STORAGE_TYPES['others'], // When user pass link to file
).meta({ dashboard: { hide: 1 }})
...
})
}
const {hooks} = require('feathers-mongoose-casl');
const {uploadsHooks} = hooks;
const uploadHookConfig = {
serviceName: 'YOUR_SERVICE_NAME',
fileKeyName: 'file',
singUrlKeyName: 'file',
privateFile: true,
autoSignUrl: true,
userKeyName: 'user'
};
module.exports = {
before: {
all: [uploadsHooks(uploadHookConfig)],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
},
after: {
all: [uploadsHooks(uploadHookConfig)],
find: [],
get: [],
create: [],
update: [],
patch: [],
remove: []
},
}