MongoError:“写入批处理大小必须在0到100000之间”。进行了0次操作

时间:2018-08-06 15:12:11

标签: node.js mongodb mongoose

我是mongodb的新手,我尝试使用post方法通过html页面在数据库中插入数据。我在服务器端使用猫鼬。 这是我的代码。

`length<-`(vec[1:(which(vec=="remove")-1)],length(vec))
 [1] "1"   "2"   NA    "4"   "NaN" "6"   NA    NA    NA    NA   

每当我从localhost html页面插入数据时,它将成功插入,我从mongo.exe终端看到该消息,但出现错误

名称:“ MongoError”,  消息:“写入批处理大小必须在1到100000之间。进行了0次操作。”,  好的:0,  errmsg:'写入批处理大小必须在1到100000之间。进行了0次操作。',  代码:16  codeName:“ InvalidLength”,  [Symbol(mongoErrorContextSymbol)]:{}}

我在任何无法解决的地方进行搜索。到底是什么意思,请回答。

3 个答案:

答案 0 :(得分:3)

首先,我将在文件顶部和路由处理程序外部使用mongoose.connect()。

然后,当您使用user.save()时,您已经将数据保存到了数据库中,并且借助回调函数,您可以处理潜在的错误或显示一些成功消息。因此db.collection。(“ users”)。insertOne()有点多余。

也许尝试此代码? :

mongoose.connect('mongodb://localhost:27017/UserInfo');

var LoginInfoSchema = new mongoose.Schema({
  _id : String,
  user: String,
  password: String
});

var user = mongoose.model('user',LoginInfoSchema);

app.post('/login', function(req, res) {
  new user({
    _id : req.body.email,
    user : req.body.user,
    password : req.body.password
  }).save(function(err,doc) {
    if(err) res.json(err);
    res.redirect('/');
  });
});

希望如此,干杯

答案 1 :(得分:0)

我花了最后两个星期来解决这个错误,并解决了这个问题。 我在码头和MongoDB官方驱动器上使用kotlin。 stackoverflow中的此链接是我得到的最接近的结果。最后,我错过了在“编码”功能结尾处调用documentCodec?.encode(writer, document, encoderContext)的功能。

以下代码消除了错误:

override fun encode(writer: BsonWriter?, value: User?, encoderContext: EncoderContext?) {
    document["_id"] =  value?._id
    document["name"] = value?.name
    documentCodec?.encode(writer, document, encoderContext)
}`

答案 2 :(得分:-1)

我也陷入了同样的错误很长一段时间。上面的答案非常适合解决错误,但我也建议您检查发送到 MongoDB 连接函数的参数(对象和回调函数)的顺序。 MongoClient.connect(function(parameters))

发送时从控制器到模型

谢谢