MongoError:处于无效状态的服务器实例未定义

Posted

技术标签:

【中文标题】MongoError:处于无效状态的服务器实例未定义【英文标题】:MongoError: server instance in invalid state undefined 【发布时间】:2016-12-24 04:54:54 【问题描述】:

这是一个基于nodejs和express的网站。数据库是Mongodb。 问题是: 当我访问http://xxx/u/username 时,没关系。

但是在我编辑我的页面并重定向到http://xxx/u/username之后,它是错误的。mongodb中的数据发生了变化。

以下是错误信息:

Function.MongoError.create (\node_modules\mongodb\node_modules\mongodb-core\lib\error.js:29:11) 在 Server.connect (\node_modules\mongodb\node_modules\mongodb-core\lib\topologies\server.js:336:22) 在 Server.connect (\node_modules\mongodb\lib\server.js:355:17) 在 在 Db.open 打开 (\node_modules\mongodb\lib\db.js:223:19) (\node_modules\mongodb\lib\db.js:246:44) 在 Function.User.get (\models\user.js:45:11) at \routes\index.js:171:8 at Layer.handle [作为句柄请求] (\node_modules\express\lib\router\layer.js:95:5) 在下一个 (\node_modules\express\lib\router\route.js:131:13) 在 Route.dispatch (\node_modules\express\lib\router\route.js:112:3) 在 Layer.handle [as handle_request] (\node_modules\express\lib\router\layer.js:95:5) 在 \node_modules\express\lib\router\index.js:277:22 at param (\node_modules\express\lib\router\index.js:349:14) 在参数 (\node_modules\express\lib\router\index.js:365:14) 在 Function.process_params (\node_modules\express\lib\router\index.js:410:3) 在下一个 (\node_modules\express\lib\router\index.js:271:10)

【问题讨论】:

【参考方案1】:

这里正在运行sn-p,我希望这会有所帮助

   var c = console;


    var app = require('express')();


    var http = require('http').createServer(app);




    var Db = require('mongodb').Db, 
    Server = require('mongodb').Server;
    var db = new Db('stock',new Server('localhost',27017));



    var io = require('socket.io')(http,path:'/infocenter/sockets');



    /****socket.io connection*****/
    io.on('connection',function(socket)

    console.log("Connected");

    /****registration details***/
    socket.on('regdetails',function(data)


    db.open(function(err,mdb)

     if(err)

        c.log(err);

       

    c.log("Mongo Registration Worked");

     /***insert user if not exists***/
     mdb.collection('users').find(name:data.fname).toArray(function(err,results)

      c.log(results.length);    
      if(results.length ==  0)
      
        mdb.collection('users').insert(name:data.fname,pass:data.upass);
        socket.emit('regmessage','message':'success','status':1); 
        mdb.close();
      
      else
       socket.emit('regmessage','message':'user existed'); 
       mdb.close();
      

    );
    /***end insert user if not exists***/

    );


    );

    /****end registration details***/




    /***login details***/

    socket.on('logindetails',function(data)



    db.open(function(err,mdb)

     if(err)

        c.log(err);

       

    c.log("Login Mongo Worked");


    /***check if login is correct***/

    mdb.collection('users').find(name:data.fname,pass:data.upass).toArray(function(err,results)


      if(results.length ==  1)
      
        socket.emit('logmessage','message':'login accepted','status':1);
        mdb.close();

      
      else
         socket.emit('logmessage','message':'login is invalid','status':0);
         mdb.close();   
       

    );

    /***end check if login is correct***/


    );


    );

    /***end login details***/






    );


    /*****end socket.io connection *****/



    var port = 7000;


    http.listen(port,function()

     console.log("Registration socket running on port:"+port);  

    );

【讨论】:

以上是关于MongoError:处于无效状态的服务器实例未定义的主要内容,如果未能解决你的问题,请参考以下文章

MongoError:虚线字段..对存储无效

MongoError:无效操作,没有批量操作

Json.NET 中的异常:处于“开​​始”状态的令牌 PropertyName 将导致无效的 JavaScript 对象

ORA-06575: 处于无效状态

Oracle 定义存储过程 不能执行,处于无效状态。

java.lang.IllegalStateException:远程端点处于 [TEXT_PARTIAL_WRITING] 状态,这是被调用方法的无效状态