【发布时间】: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