2011-11-16 9 views
1

おはよう、RingoJSでセッションデータを設定および読み取るにはどうすればよいですか?

私は最近RingoJSと一緒にStick middlewareと一緒に遊んでいて、今はセッションが残っています。私はそれを働かせることはできません。

var {Application, helpers} = require("./_lib_/stick"), 
    Response = require("ringo/jsgi/response"); 

export("app"); 

var app = Application(); 

app.configure("route", "render", "session"); 
app.render.base = module.resolve("templates"); 
app.render.master = "page.html"; 

app.get("/session.htm", function(request) { 
    //request.session.data.foo = "bar"; 
    request.session.data.put("foo", "bar"); 

    return Response.redirect("session2.htm"); 
}); 

app.get("/session2.htm", function(request) { 
    var value = request.session; 

    return Response.html("Session: " + value); 
}); 

actions.js

main.js

var {Application} = require("./_lib_/stick"), 
    app = exports.app = Application(); 

app.configure("mount"); 
app.mount("/", require("./actions")); 

if (require.main === module) { 
    require("ringo/httpserver").main(module.directory); 
} 

私は多くのcombinaisonをテストしてみたが、espectedとしてそれらのどれも働きました。

私が得るほとんどのエラーは、セッションからデータを読み取ることです。たとえば:

はTypeError:

未定義の任意のヒントからプロパティ "データ" を読んでいないことはできますか?

答えて

2

"session"は、"mount"の前に来る必要があります。app.configureです。 main.jsの4行目

:二回ミドルウェアを実行するにはポイントがありませんので、

app.configure("session", "mount"); 

はその後、 app.configureに後で呼び出しから "session"を削除します。

+0

いいえまだ動作していません。 – Cybrix

+0

実際には、セッションBEFOREを宣言するとマウントされました: 'app.configure(" session "、" mount ");'。私はそれを受け入れることができるようにあなたの答えを更新します。ありがとうございました。 – Cybrix

+0

おっと、私はあなたがすでにそれを持っていたことに気付かなかった。それは理にかなっている。 –

関連する問題