error ReferenceError:未定义ObjectID

Anu*_*nup 5 mongodb node.js angularjs

我想用GridJS上传图片.我正在使用https://www.npmjs.org/package/gridfs-stream.它给了我error ReferenceError: 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');
Run Code Online (Sandbox Code Playgroud)

Pau*_*gel 14

ObjectID它不是一个全局变量,它由mongoose定义(参见文档):

var fileId = mongoose.Types.ObjectId();
Run Code Online (Sandbox Code Playgroud)


小智 14

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

\n
// ObjectID deprecated \xe2\x9d\x8c\nvar ObjectId = require(\'mongodb\').ObjectID;\n\n
Run Code Online (Sandbox Code Playgroud)\n
// ObjectiD \xe2\x9c\x85\nconst ObjectId = require(\'mongodb\').ObjectId;\n
Run Code Online (Sandbox Code Playgroud)\n


Ill*_*ent 11

不是直接解决方案,而是浪费了10分钟的小错误:

var ObjectId = require('mongodb').ObjectID;
Run Code Online (Sandbox Code Playgroud)

我声明了一个带有小d的变量ObjectId 但是在使用变量时,我尝试使用大写D的ObjectID.


小智 7

var ObjectId = require('mongodb').ObjectId;
Run Code Online (Sandbox Code Playgroud)

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


Shu*_*ubh 6

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

const ObjectId = require('mongodb').ObjectId;
Run Code Online (Sandbox Code Playgroud)

如果你想使用它


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

Run Code Online (Sandbox Code Playgroud)