2012-04-21 8 views
0

に動作していない:マングースは、私が定義されたヒスイ-LANG

var PersonSchema = new Schema({ 
    avatar: Number 
}); 
PersonSchema.virtual("avatarUrl").get(function() { 
    return "http://example.com/avatar/" + this.avatar; 
}); 

をして、これはノードのコードで動作します好き:

PersonModel.findOne(function(err, person) { 
    console.log(person.avatarUrl); // http://example.com/avatar/1 
}); 

が、ヒスイのテンプレートでは、私が使用している場合:

img(src!= person.avatarUrl) 

これは私が何を期待与えないでしょう。

ヒスイにマングース仮想作品を作るための方法はありますか?私は問題がヒスイをどうする事はないと思う

EDIT


私はセッションで「人物」オブジェクトを保存だって、私はセッションに保存する前に、「仮想」のすべてが正常に動作しますしかし、私は再びセッションからそれを得るときには動作しません。
これはセッションメカニズムに関するものかもしれません。 connect-redisのようなその何かが、その前には、保存JSON.stringify(req.session)を呼び出す場合は、使用しているが、何セッションメカニズム "

+0

代替構文を試しましたか? '#{person.avatarUrl}'? – mindandmedia

+0

私はそれを試してもまだ動作していません。 – Kevin

+0

私たちと共有できるエラーメッセージはありますか?完全性のためのレンダー呼び出し... – mindandmedia

答えて

2

わかりません。これは、mongoose文書をgetters/setters/virtualsや他の動的能力のない静的javascriptオブジェクトに変換します。あなたはvirtualsを、現在の値が同様に静的な値としてセッションに格納したい場合、あなたはreq.session.person = doc.toJSON({ virtuals: true })を呼び出すこともできます。

別のオプションは、それがセッションから返された後MongooseDocumentにセッション人物を具体化することです。

// assume the session has been retrieved already 
var person = new Person; 
person.init(req.session.person); 
req.session.person = person; 
console.log(req.session.person.someVirtual); // yay! 
関連する問題