2017-03-25 7 views
1

私はnode.jsシングルページアプリケーションを作成しています。ユーザーが認証されている場合、特定のビューをホームページに表示したいこの目的のために、ユーザーが認証されているかどうかを確認する関数を作成しました。それはうまく動作します。関数内でnode.jsにインポートされたモジュールを返す方法は?

しかし、特定のビューを返すときに、私はこれにいくつか問題があります。

私はいくつかのアプローチを試みましたが、いずれのビューも返すことはできません。

ビュー

const notAuth = require('../view1') 
const isAuth = require('../view2') 

は、これが私の最初の試みであった:

module.exports = function home (ctx, next) { 
    if (ctx.auth) { 
    return isAuth 
    } else { 
    return notAuth 
    } 
    next() 
} 

そして最後に、私はこれを試してみました。すると

const home = function (ctx) { 
    if (ctx.auth) { 
    return isAuth 
    } else { 
    return notAuth 
    } 
} 
module.exports = home 

、私だけmodule.exportsを使用しようとしました:

const authenticated = function (ctx) { 
    if (ctx.auth) { 
    return isAuth 
    } else { 
    return notAuth 
    } 
} 

module.exports = function home (ctx, next) { 
    return authenticated(ctx) 
    next() 
} 

注:私は、たとえば使用している場合、私は特定のビューで必要な

各モジュールが正常に動作します:

module.exports = notAuth 

がどのように機能内の特定のインポートされたモジュールを返すことができますか?

+0

へのコンテキストを渡す必要があります。しかし、あなたは彼らがどのように失敗しているかは言いませんでした。 'view1'と' view2'でエクスポートされた関数のメソッドシグネチャがどんなものか不思議ですあなたが記述する症状から、 'func(ctx、next)'と異なると思います –

+0

あなたはエクスポートされた関数。上記のいずれも動作しますが、どのように呼び出すかによって異なります – slebetman

+0

@ barry-johnson彼らは失敗していませんでした、少なくとも私はどのように見えませんでした。私は間違いを起こさなかった。 –

答えて

2

たぶん、あなたは実際にあなたの例の一つ一つは、関数をエクスポートしなければならない目標経路

const home = function (ctx, next) { 
    if (ctx.auth) { 
    return isAuth(ctx, next) 
    } else { 
    return notAuth(ctx, next) 
    } 
} 
+0

これは、ターゲットルート上のコンテキストと素晴らしい動作します。どうもありがとう。 –

関連する問題