为什么 gridfs get 不能仅按文件名处理文件 id (ObjectId)

2024-02-19

我正在使用nodejs mongodb mongoose 和gridfs。 当我尝试通过文件名获取文件时,如果我想通过 id 获取它,那么一切都工作得很好 错误:您要读取的文件不存在。 我使用以下代码 console.log("res.pic_id : " + res.pic_id) 我得到了正确的 ObjectId。 这是代码:

var GridFS = require('GridFS').GridFS;
var myFS = new GridFS('db');
var fs = require('fs')
var Profile = db.model('Profile');
Profile.findOne({'_id' : clientID},['_id', 'username','pic_id','pic_filename'],function(err, res){
    if (err) { 
        console.log("ERROR serching user info:  " + err);
        callback(JSON.stringify(JSONRes(false, err)));
    }
    else {
         if (res) {
        console.log("res.pic_id : " + res.pic_id);
        myFS.get(res.pic_id,function(err,data){
            if (err)
                console.log("ERROR "+err)
            else {
                callback(data);
            }})
        };
        }
        else {
        callback(JSON.stringify(JSONRes(false, err)));

        }
    }
})

谢谢你!


我有类似的问题。问题是我使用的是 ObjectID 的字符串表示形式,而不是真正的 ObjectID。而不是这个:

var gridStore = new GridStore(db, '51299e0881b8e10011000001', 'r');

我需要这样做:

var gridStore = new GridStore(db, new ObjectID('51299e0881b8e10011000001'), 'r');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 gridfs get 不能仅按文件名处理文件 id (ObjectId) 的相关文章

随机推荐