【问题标题】:error ReferenceError: ObjectID is not defined错误 ReferenceError: ObjectID 未定义
【发布时间】:2014-04-04 06:49:27
【问题描述】:

我想用 GridJS 上传图片。我为此使用https://www.npmjs.org/package/gridfs-stream。它给了我errorReferenceError: ObjectID is not defined

我是初学者,所以不知道发生了什么。

如何解决这个错误?

var Grid = require('gridfs-stream');
    var conn = mongoose.createConnection('localhost', 'Test', 27017);
    var gfs = Grid(conn.db, mongoose);

    var fileId = new ObjectID(uniqId);
    var fileType = req.header('X-File-Type');
    var fileName = req.header('X-File-Name');
    var uniqId = req.param('uniqId', '112211112111');

    console.log('upload start');
    // streaming to gridfs
    var writestream = gfs.createWriteStream(fileId, [{ "content_type": fileType, "metadata": { "fileName": fileName, "uploaded_at": (new Date()).toString() } }]);
    fs.createReadStream('/some/path').pipe(writestream);

    // streaming from gridfs
    var readstream = gfs.createReadStream(fileId, [{ "content_type": fileType, "metadata": { "fileName": fileName, "uploaded_at": (new Date()).toString() } }]);

    //error handling, e.g. file does not exist
    readstream.on('error', function (err) {
        console.log('An error occurred!', err);
        throw err;
    });

    readstream.pipe(response);
    console.log('upload done');

【问题讨论】:

  • 这是什么 var fileId = new ObjectID(uniqId);我在代码中没有看到任何 uniqId
  • ohhh....我后来添加了它....错误也得到了解决....但是一个新的错误说TypeError: undefined is not a function

标签: node.js angularjs mongodb


【解决方案1】:

不是直接的解决方案,而是一个小错字浪费了我 10 分钟的时间:

var ObjectId = require('mongodb').ObjectID;

我用小 d 声明了一个变量 ObjectId,但是在使用该变量时,我尝试使用大写 DObjectID

【讨论】:

  • require('mongodb').ObjectID 现在已弃用。应该使用require('mongodb').ObjectId;
【解决方案2】:

ObjectID不是全局变量,它是由猫鼬定义的(见documentation):

var fileId = mongoose.Types.ObjectId();

【讨论】:

    【解决方案3】:

    试试这个。它会在您的代码中正常工作。

    var ObjectId = require('mongodb').ObjectID;
    

    【讨论】:

      【解决方案4】:

      您可以使用下面的代码来获取 ObjectId

       const  ObjectID = require('mongodb').ObjectId;
      

      如果你想使用它

            db.collection.deleteOne({_id:new  
            ObjectID(req.params._id)}).then(data=>{
      
              res.send({status:"Success",data:data});
          })
      

      【讨论】:

        【解决方案5】:

        var ObjectId = require('mongodb').ObjectId;

        ObjectID(大写“D”)已弃用。请改用 ObjectId(小写“d”)。 (来源:@types/bson 包

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-09-08
          • 2020-01-08
          • 1970-01-01
          • 1970-01-01
          • 2020-02-15
          • 2019-04-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多