Node.js 将sqlite数据库文件发布到firebase函数

Node.js 将sqlite数据库文件发布到firebase函数,node.js,google-cloud-functions,node-sqlite3,Node.js,Google Cloud Functions,Node Sqlite3,我正在尝试将sqlite db文件(kindle vocab.db)发布到firebase云函数。然后函数应该读取文件并执行一些操作。但是,它不起作用。我正在使用express处理请求。 请求主体的ContentType是multipart/formdata,一个键是文件 req.body是一个缓冲区,如下所示: ----------------------------400426499287718202359095 Content-Disposition: form-data; name="

我正在尝试将sqlite db文件(kindle vocab.db)发布到firebase云函数。然后函数应该读取文件并执行一些操作。但是,它不起作用。我正在使用express处理请求。 请求主体的
ContentType
multipart/formdata
,一个键是文件

req.body是一个缓冲区,如下所示:


----------------------------400426499287718202359095
Content-Disposition: form-data; name="db"; filename="vocab.db"
Content-Type: application/octet-stream

SQLite format 3   @    W   �                                                                W -�&   �    ����I ��  ... and so on
打开数据库会引发异常:

  const db = new sqlite3.Database(req.body.toString());

甚至可以打开这样的数据库文件吗?如果是这样,有人知道怎么做吗?

根据上的文档,构造函数的第一个参数可以是基于磁盘的匿名数据库的emptystring,
”:memory:“
用于匿名内存中数据库,或数据库文件的文件路径,结果是
SQLite format 3@W�                                                                W-�&   �    ����我��  ... 以此类推
在文件系统中不是有效的文件路径。似乎您试图将数据库内容作为字符串提供给构造函数,根据文档,这是不合法的。首先将db写入文件,并将文件路径指定给构造函数。

这个SQLite库真的将数据库文件作为字符串读取吗?看起来不太可能。是的,你是对的,它只把文件名作为字符串。在:
filename:中,有效值是文件名,“:memory:”表示内存中的匿名数据库,空字符串表示基于磁盘的匿名数据库。匿名数据库不会持久化,当关闭数据库句柄时,它们的内容会丢失。
所以我猜您只能从文件中读取数据库或在内存中创建新的数据库,对吗?
>  events.js:174 
>        throw er; // Unhandled 'error' event
>        ^
>   
>  Error: SQLITE_CANTOPEN: unable to open database file
>  Emitted 'error' event