【问题标题】:MongoError: attempt to write outside buffer boundsMongoError:尝试写入缓冲区边界之外
【发布时间】:2015-07-07 06:13:35
【问题描述】:

我有一个简单的 node.js 代码,它试图获取对象、填充字段然后更新同一个对象:

var MongoClient = require('mongodb').MongoClient
, Db = require('mongodb').Db
, Server = require('mongodb').Server
, ObjectID = require('mongodb').ObjectID;

var db = new Db('testing', new Server('localhost', 27017));
db.open(function(err, db){
   var Users = db.collection('users');
   Users.find({code  : {$exists : false} }, {email : 1}, function(err,      users){
   users.forEach(function(user){
       var code = generateCode();
       var userID  = user._id;
       Users.update({ _id :  user._id  }, {$set : {code : code } }, function(err, results){
        if (err) console.log(err);
        else console.log(results);
       });

   });
});

当我尝试更新时,mongo 正在抛出:

MongoError: attempt to write outside buffer bounds. 

谁能解释我做错了什么?

【问题讨论】:

  • generateCode() 返回什么?
  • 一个字符串 - 512 个字符长。
  • 您能否更新您的问题以包含导致错误的示例代码值?
  • 对不起,我完全忘记了这个问题, generateCode() 函数返回一个复杂的对象(里面有属性和函数),这就是为什么 mongo 无法保存它。如果你想保存一个函数,你必须将它添加到一个名为 system.js 的特殊系统集合中。 docs.mongodb.org/manual/tutorial/…

标签: node.js mongodb mongodb-query


【解决方案1】:

此错误通常在尝试保存/更新包含大量信息/非法类型信息的文档时发生。

在 mongodb 中,最大 BSON 文档大小为 16 兆字节。这里是link了解更多详情。

【讨论】:

    猜你喜欢
    • 2016-09-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多