尝试在服务器端插入文件时流星文件集合显示为空?
Posted
技术标签:
【中文标题】尝试在服务器端插入文件时流星文件集合显示为空?【英文标题】:Meteor Files Collection showing up empty when trying to insert files on server-side? 【发布时间】:2021-10-24 14:53:57 【问题描述】:我在 Meteor 项目中使用 Meteor Files 包(来自 https://github.com/VeliovGroup/Meteor-Files)。我想设置一个文件集合,但我在从服务器端填充它时遇到问题。
这是我在/server/main.js
里面的相关代码:
import Sources from "/imports/db/sourcesCollection";
Meteor.startup(() =>
// code to run on server at startup
Sources.addFile("/images/bigLogo.png",
fileName: "bigLogo.png",
type: "image/png",
fileId: "abc123AwesomeId",
meta: ,
)
...
这里是sourcesCollection.js
:
import FilesCollection from "meteor/ostrio:files";
const Sources = new FilesCollection( collectionName: "Sources" );
export Sources ;
bigLogo.png
是我项目中public/images
目录下的一个图片png文件,我已经在其他文件中成功使用过。作为健全性检查,为了测试这是否是文件路径问题,我还尝试将图像移动到与server/main.js
文件相同的目录并将图像路径更改为./bigLogo.png
,但无济于事。
当我的服务器启动时,我没有收到任何错误消息,所以看起来addFile()
正在工作,但是当我通过流星外壳检查服务器端的集合时,它总是显示为一个空集合。这是我正在做的检查:
首先,我运行meteor shell
,然后运行import Sources from "imports/db/sourcesCollection.js"
,最后运行Sources.find().fetch()
,它返回一个空数组[]
。
总而言之,我的问题是:如果我的代码在我的服务器启动时成功运行,为什么我的集合在我的流星外壳中显示为空?
编辑:在控制台中运行 .addFile()
语句会返回一个 FilesCollection 对象,并且在检查 Sources.find().fetch()
时该集合仍然是空的。
编辑 2:我添加了一个回调函数来显示来自 addFile() 的错误。我收到一个涉及文件路径的 ENOENT 错误。图像肯定在那里并且路径是正确的(我在同一个文件夹和公用文件夹中都尝试过),所以我不知道为什么会这样。我尝试过重置项目,甚至重新安装 Meteor,但也没有解决问题。
【问题讨论】:
【参考方案1】:如果您遇到此问题,以下是为我解决的问题:
Meteor: Error: ENOENT when trying to access an image using node-gd
【讨论】:
以上是关于尝试在服务器端插入文件时流星文件集合显示为空?的主要内容,如果未能解决你的问题,请参考以下文章