尝试在服务器端插入文件时流星文件集合显示为空?

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

【讨论】:

以上是关于尝试在服务器端插入文件时流星文件集合显示为空?的主要内容,如果未能解决你的问题,请参考以下文章

将简单的服务器端 JS 文件添加到流星

插入新对象时 Meteor 0.8.2 客户端集合为空

如何将服务器端文件插入图像、fs.files 和 fs.chunks -GridFS (Ostrio/files)

无法使用 graphql 突变更新流星用户集合

流星服务器端断点从未在 cloud9 中命中

流星蒙戈会议