首页 > 解决方案 > '{ action: string; 类型的参数 过期:字符串;}' 不可分配给“GetSignedUrlConfig”类型的参数

问题描述

我正在尝试检索上传的新文件的下载 url,以便将其写入我的数据库。我已经关注了这个答案官方文档,但我的函数出现了错误。

这些是我的进口:

import * as functions from "firebase-functions";
import * as admin from "firebase-admin";
import { FieldValue } from "@google-cloud/firestore";
import { _namespaceWithOptions } from "firebase-functions/lib/providers/firestore";
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();
const defaultStorage = admin.storage();

这是目前我想要的云功能:

exports.writeFileToDatabase = functions.storage
  .object()
  .onFinalize(object => {
    const bucket = defaultStorage.bucket();
    const file = bucket.file(object.name as string);

    const options = {
        action: 'read',
        expires: '03-17-2025'
      };

    return file.getSignedUrl(options)
    .then(results => {
      const url = results[0];

      console.log(`The signed url is ${url}.`);
      return true;
    })
  });

但是当传入optionsgetSignedUrl得到这个错误:

Argument of type '{ action: string; expires: string; }' is not assignable to parameter of type 'GetSignedUrlConfig'

我也得到一个错误的results说法:

Parameter 'results' implicitly has an 'any' type

我看不出我在做什么与我用作参考的示例不同。

标签: typescriptfirebasegoogle-cloud-functionsfirebase-storage

解决方案


这是因为您使用的是 TypeScript,而您所指的示例是使用 JavaScript。GetSignedUrlConfig您应该按如下方式导入类型:

import { GetSignedUrlConfig } from '@google-cloud/storage';

const options: GetSignedUrlConfig = {
  action: 'read',
  expires: '03-17-2025'
};

推荐阅读