MongoDB取代了当前的OBJ(更新)



我正在尝试使用更新查询更新集合中的obj,但没有逐个字段定义...按原样获取 OBJ(JSON),以替换当前存在的内容。

这就是我试图做的,

function(userObj, callback) {
      usersCollection.update( { _id : ObjectId(context.user._id) }, userObj, function(err, updatedUser) {
        if(err)
          callback(err);
          console.log('user was updated - here is the new db obj', updatedUser);
          callback(err, updatedUser);
      });
    }

这是我收到的错误,

/Users/x/node_modules/monk/node_modules/mongodb/lib/mongodb/connection/base.js:246
        throw message;
              ^
Error: Argument passed in must be a single String of 12 bytes or a string of 24 hex characters
    at new ObjectID (/Users/x/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/lib/bson/objectid.js:38:11)
    at ObjectID (/Users/x/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/lib/bson/objectid.js:29:42)
    at Object.module.exports.db.users.update (/Users/x/db.js:54:39)
    at /Users/x/login.js:91:30
    at Promise.<anonymous> (/Users/x/db.js:42:9)
    at Promise.<anonymous> (/Users/x/node_modules/monk/node_modules/mpromise/lib/promise.js:178:8)
    at Promise.emit (events.js:117:20)
    at Promise.emit (/Users/x/node_modules/monk/node_modules/mpromise/lib/promise.js:84:38)
    at Promise.fulfill (/Users/x/node_modules/monk/node_modules/mpromise/lib/promise.js:97:20)
    at Promise.resolve (/Users/x/node_modules/monk/node_modules/mpromise/lib/promise.js:126:15)

记录context.user._id会返回真实用户的 ID(来自 mongo 的 ID),该 ID 55293e1d2af8dc9ed83141b6

根据猫鼬文档,您不必在更新调用中将_id字段转换为Objectid

因此,以下代码应该可以正常工作。

function(userObj, callback) {
  usersCollection.update( { _id : context.user._id }, userObj, function(err, updatedUser) {
    if(err)
      callback(err);
      console.log('user was updated - here is the new db obj', updatedUser);
      callback(err, updatedUser);
  });
}

我已经在我的一个项目中检查了打字稿实现,我在其中使用_id作为普通字符串并且代码工作正常。查看 github 源代码updateLog函数以获取更多详细信息。

如果我错过了什么,请告诉我。

我希望这对:)有所帮助

最新更新