Есть ли способ напрямую прочитать содержимое файла JSON в хранилище Google Cloud Datastore с помощью node.js, не загружая его раньше? - PullRequest
0 голосов
/ 20 ноября 2018

Я являюсь разработчиком Python, но обстоятельства проекта, над которым я сейчас работаю, обязывают меня найти решение в Node.js.

У меня есть проверка документации ВКласс File, у меня есть этот метод: createReadStream, но кто заставляет меня скачивать в локальном, прежде чем читать его.

Однако решение, которое я ищу, похоже на сохранение содержимого в переменной, чтобы я мог читать и интерпретировать, как захочу.

Это скрипт метода createReadStream ():

var storage = require('@google-cloud/storage')();
var bucket = storage.bucket('my-bucket');

var fs = require('fs');
var remoteFile = bucket.file('image.png');
var localFilename = '/Users/stephen/Photos/image.png';

remoteFile.createReadStream()
  .on('error', function(err) {})
  .on('response', function(response) {
    // Server connected and responded with the specified status
   })
  .on('end', function() {
    // The file is fully downloaded.
  })
  .pipe(fs.createWriteStream(localFilename));

Спасибо за ваше понимание и помощь.

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Сценарий:

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket(bucket);
const remoteFile = bucket.file(file);

let buffer = '';
remoteFile.createReadStream()
  .on('error', function(err) {console.log(err)})
  .on('data', function(response) {
    buffer += response
  })
  .on('end', function() {
    //console.log(buffer);
    res.send(buffer);
  })
0 голосов
/ 20 ноября 2018

Да, возможно, я сделал для вас следующий код, отлично работает в облачной функции:

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */

'use strict';

const gcs = require('@google-cloud/storage')();

exports.readJSON = (req, res) => {
  let file = gcs.bucket('YOUR_BUCKET').file('YOUR_FILE.JSON');
  let readStream = file.createReadStream();
  res.send(readStream);
};

и здесь у вас есть package.json (зависимости):

{
  "name": "sample-http",
  "version": "0.0.1",
  "dependencies": {
  	"@google-cloud/storage": "1.6.0"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...