javascript - Meteor:如何在 mongodb 集合中存储和检索文件?

标签 javascript mongodb meteor

我尝试将上传文件的内容保存在集合中:

export const Files = new Mongo.Collection('files');

Meteor.methods({
    'saveFileToDB': function (buffer) {
        Files.insert({ data:buffer,
            createdAt: new Date(),
            owner: this.userId,
            username: Meteor.users.findOne(this.userId).username
        });
    },
});

在另一个文件中我想检索保存的文件。首先,我不知道应该传递什么 id 。假设集合中有一个文件,或者我想要第一个文件,或者当前用户拥有的文件。我尝试过,我将 fileId 传递为 1 但它不起作用。我实际上不知道下面的问号:

import {Files} from "./files";

Meteor.methods({
    'slides.readFileFromDB'(fileId) {
        if (Files.???) { //contain any data
           const text = Files.findOne(???);
           console.log(text);
           // Meteor.call('slides.insert', text);
           return text;
        }
    })
 });

最佳答案

有一个特殊的层用于将文件存储为 block ,称为 GridFs因为当您尝试存储大于 16MB 的二进制文件时,普通集合会出现问题。

Meteor 中还有一个完善的包装器用于处理文件。查看以下包:https://github.com/VeliovGroup/Meteor-Files

关于javascript - Meteor:如何在 mongodb 集合中存储和检索文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58415779/

相关文章:

java - 无法使用带参数的构造函数 NO_CONSTRUCTOR 实例化 java.util.Set

MongoDb:如何从 .gz 文件导入转储数据?

mongodb - 让我的 mongoDB 在每天的特定时间收集数据?

javascript - 拆分值并以格式化方式显示

php - 从 JSON 编码的 PHP 传递 JavaScript 函数

javascript - 其他人可以在他们的 Node.js REPL 中使用 let 语句吗?

javascript - Meteor:如何调用带有2个参数的函数并等待结果

javascript - 函数属性的真正含义是什么

javascript - 蒙戈数据库 : Find and insert if time slots doesn't conflict with other time slots

javascript - 模板功能在加载网页时运行两次