2016-11-07 8 views
3

私の目標は、nodedbとexpressjsフレームワークを使用しているサーバーコードを、orientdbのデータベースに接続することです。まず 私はセッションをデータベースに保存したいと思っていました。しかし私はデータベースに私のサーバーを接続するのが難しかった。明示的にconnect-orientdbモジュールを使用する方法

私はserver.jsを実行したときに私が取得エラー:

/Users/soroush/Desktop/nodeOrient/node_modules/connect-orientdb/lib/connect-orientdb.coffee:191 
    })(connect.session.Store); 
        ^

TypeError: Cannot read property 'Store' of undefined 
    at module.exports (/Users/soroush/Desktop/nodeOrient/node_modules/connect-orientdb/lib/connect-orientdb.coffee:22:46) 
    at Object.<anonymous> (/Users/soroush/Desktop/nodeOrient/server.js:8:48) 
    at Module._compile (module.js:541:32) 
    at Object.Module._extensions..js (module.js:550:10) 
    at Module.load (module.js:458:32) 
    at tryModuleLoad (module.js:417:12) 
    at Function.Module._load (module.js:409:3) 
    at Function.Module.runMain (module.js:575:10) 
    at startup (node.js:160:18) 
    at node.js:449:3 

と私のserver.jsコードは次のとおりです。

var express = require('express'), 
    cs = require("coffee-script/register"), 
    app = express(), 
    path = require('path'), 
    cookieParser = require('cookie-parser'), 
    session = require('express-session'), 
    config = require('./config/config.js'), 
    orientDBStore = require('connect-orientdb')(session), 
    OrientDB = require('orientjs'), 
    orientDBConfig = { 
     server : { 
      host: "localhost", 
      port:2424 
     }, 
     db : { 
      user_name: "admin", 
      user_password: "admin" 
     }, 
     database : "sessions", 
     class_name : "sessions_class" 
    }, 
    server = OrientDB({ 
    hose : "localhost", 
    port : "2424", 
    username : "root", 
    password : "root" 
    }) 
    ; 

app.set('views', path.join(__dirname, 'views')); 
app.engine('html', require('hogan-express')); 
app.set('view engine', 'html'); 
app.use(express.static(path.join(__dirname,'public'))); 

app.use(cookieParser()); 

require('./routes/route.js')(express, app); 

    app.use(session({ 
     secret:"mySecret", 
     store: new orientDBStore(orientDBConfig) 
    })); 

app.listen(8000, function() { 
    console.log("app is listening on port 8000"); 
}) 

私の主な問題は、connect-orientdbが使用されたということですセッションモジュールが明示的に組み込まれていたときに、そのセッションが別のモジュールになったときに、この問題が発生しました。

+0

'store'というプロパティを持つ値のいずれかのようですが、定義されていません。 –

+0

@OleksandrGubchenkoええ、thats問題ですが、私はこのメソッドを使用してmongoDBのような他のDBをチェックし、この問題はありませんでした。 storeプロパティはconnect-mongodbモジュールで定義されています。 – soroush

答えて

0

最終的に私はそれのための解決策を見つけました有用。

0

OrientDBのExpressJSについては、Blog Tutorial with ExpressJS and OrientDBを参照してください。

そしてtry to use

orientDBStore = require('orient')(session), 

の代わり:このgithub linkがある詳細は

var session = require('express-session'), 
    OrientoStore = require('connect-oriento')(session); 

app.use(session({ 
     secret: 'SomeSecret', 
     store: new OrientoStore({ 
      server: "host=localhost&port=2424&username=dev&password=dev&db=test" 
     }) 
    })); 

:誰もがこの問題に直面した場合

orientDBStore = require('connect-orientdb')(session), 
+0

orientは別のモジュールです。私はconnect-orientdbモジュールを使用するためにこの[link:npmjs.com](https://www.npmjs.com/package/connect-orientdb)を使用していましたが、今やセッションモジュールはexpressjsの組み込みモジュールではありません。私は別にそれを必要としています。 – soroush

+0

私の主な問題は、セッションモジュールが明示的に組み込まれていたときにconnect-orientdbが使用されたことですが、今はそのセッションがこの問題に発生した別のモジュールです。 – soroush

+1

公式のモジュールではないため、古くなっている可能性があります –

関連する問題