mongoose连接mongodb3.0分片后,保存时出错!
发布于 9 年前 作者 tcrct 3833 次浏览 最后一次编辑是 8 年前 来自 问答

app.js里的连接代码 var mongoose = require(‘mongoose’);

app.get(’/shard_add’, routes.add); … http.createServer(app).listen(app.get(‘port’), function(){ var uri = ‘mongodb://127.0.0.122:12345,127.0.0.242:12345,127.0.0.175:12345/syt’; var opts = { mongos: true }; mongoose.connect(uri, opts, function (err) { if(err){ console.log(err); }else{ console.log("#############################################"); console.log(“connection mongodb success…”); } }); console.log('Express server listening on port ’ + app.get(‘port’)); });

======================================================================================

routes下的index.js

var mongoose = require(‘mongoose’); var Schema = mongoose.Schema; var ObjectId = Schema.ObjectId;

var NodeShardSchema = new Schema({ codeid : String, name : String }); var NodeShardSchemaCollectionName = ‘NodeShard’; var NodeShard =mongoose.model(‘NodeShard’, NodeShardSchema, NodeShardSchemaCollectionName);

exports.add = function(req, res){ for(var i=0; i<10; i++){ var node_shard = new NodeShard(); node_shard.codeid = i+""; node_shard.name = “_”+i; node_shard.save(function(err){ if(!err){ console.log(" save success!"); }else{ console.log(err); } }); } };

版本如下: nodejs: v0.10.26 mongoose: 3.8.x express: 3.4.8

以上这段代码,是连接到mongodb3.0.4的分片,连接提示是成功了的,但不知道为什么一执行add的方法之后就报driver is incompatible with this server version,具体如下:

Mongoose: NodeShard.insert({ __v: 0, _id: ObjectId(“55c4c14659daef437cbad1c8”), codeid: ‘9’, name: ‘_9’ }) {}
{ [MongoError: driver is incompatible with this server version] name: ‘MongoError’ }

请问是那里写得不对导致的呢?是否需要升级nodejs或mongoose?如果是mongoose的话,看了一下官网,这个应该是最新的了。

谢谢大家的帮忙!

2 回复

把 mongoose 升到最新版去吧。我们社区早就在用 4 了。 mongoose 3.8 出来的时候,mongodb 3.0 还没出。

@alsotang 谢谢你的关注,下载了4.x版解压后,启动app.js时出现这个异常:Cannot find module ‘mongodb’, 请问如何解决?

已经解决了,安装一下mongodb这个包就好了。或者npm update or npm install

回到顶部