如何在nodejs mongodb本机驱动程序中将字符串转换为ObjectId?

时间:2014-01-12 15:26:26

标签: javascript node.js mongodb

我在nodejs环境中使用mongodb native driver我需要将id字符串转换为ObjectId才能在我的更新查询中使用它,我该怎么办?此?

2 个答案:

答案 0 :(得分:70)

ObjectIdnodejs driver doc

如果您有一个表示BSON ObjectId的字符串(例如从Web请求接收),那么您需要将其转换为ObjectId实例:

const {ObjectId} = require('mongodb'); // or ObjectID 
// or var ObjectId = require('mongodb').ObjectId if node version < 6

const updateStuff = (id, doc) => {
  // `ObjectId` can throw https://github.com/mongodb/js-bson/blob/0.5/lib/bson/objectid.js#L22-L51, it's better anyway to sanitize the string first
  if (!ObjectId.isValid(s)) {
    return Promise.reject(new TypeError(`Invalid id: ${id}`));
  }
  return collection.findOneAndUpdate(
    {_id: ObjectId(id)}, 
    {$set: doc}, 
    {returnOriginal: false}
  );
};

答案 1 :(得分:8)

var {ObjectId} = require('mongodb'); // or ObjectID Not Working
@caubub提到的

对我不起作用。

但是当我在mongodb中使用var ObjectID = require('mongodb').ObjectID; // convert string to ObjectID时,我能够在nodejs mongodb native drive中将字符串转换为ObjectId。

参考访问http://mongodb.github.io/node-mongodb-native/2.2/api/ObjectID.html