Gridfs删除文件错误

时间:2017-10-03 20:27:18

标签: node.js mongoose gridfs gridfs-stream

我使用的是mongoose和mongoose-gridfs模块,无法弄清楚如何修复错误。 可以轻松地将文件添加到我的数据库并阅读它:

router.get('/:id', (req, res)=> {
     if (gridfs == null) {
         gridfs = require("mongoose-gridfs")({
             collection: 'attachments',
             model: 'Files'
         });
         Attachment = gridfs.model;
     }
     let stream = Attachment.readById(req.params["id"]);
}

但是当我在删除路线中使用相同的方式时:

router.delete('/:id', (req, res)=> {
     if (gridfs == null) {
         gridfs = require("mongoose-gridfs")({
             collection: 'attachments',
             model: 'Files'
         });
         Attachment = gridfs.model;
     }
     Attachment.unlinkById(req.params["id"], (err) => {
     });
}

它给我一个错误TypeError:无法读取属性' unlink'为null。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

初始化变量' gridfs'并要求“mongoose-gridfs'尝试传递你的猫鼬连接,如下所示:

//instantiate mongoose-gridfs
var gridfs = require('mongoose-gridfs')({
  collection:'attachments',
  model:'Attachment',
  mongooseConnection: connection
});

也许值得尝试记录req.params [" id"]的值,以确保你在那里有一个id。

还可以尝试使用unlink方法而不是unlinkById,如下所示:

Attachment.unlink(<objectid>, function(error, unlinkedAttachment){
  ...
});