Как я могу вернуть значение, используя узел с выражением в функции app.locals - PullRequest
0 голосов
/ 29 апреля 2019

Я работаю над выражением nodejs и реализую функцию app.locals

в файле представления (шаблон ejs): -

<% if(someHelper('/admin/dashboard',req.user._id)){ %>
        <li>
            <a href="/admin/dashboard">
                <i class="fa fa-user">
                </i>
                <span>
                    Create Chairman
                </span>
            </a>
        </li>
<% } %>

в файле app.js (server.js):-

app.locals.someHelper = function(route_name,user_id) {

user.find({user_id:user_id, route_name:route_name}, function(err, user_per){
if(err) return false;
    if(typeof user_per != 'undefined' && user_per.length > 0){
            return true;
            console.log("true");
    } else {
        return false;
        console.log("false");
    }
});
}

, если если условие выполнено, то не вернуть допустимое значение 1.

также пытался получить значения req и callback perameter и вернуть значение, но оба не полезны в этой функции.

app.locals.someHelper = function(route_name, user_id, callback) {
user.find({ 
    user_id: user_id,
    route_name: route_name
}, function(err, user_per) {

    if(typeof user_per != 'undefined' && user_per.length > 0){
        // permitted
        return callback(1);
    }

    callback(0);
});
}

обратный вызов не является функцией

я хочу, чтобы возврат был разрешен 0, если часть не выполнена, иначе возврат разрешен 1.

ссылка

1 Ответ

1 голос
/ 29 апреля 2019

Отображение «обратного вызова не является функцией» происходит из-за того, что вы не определили функцию обратного вызова. Поэтому, пожалуйста, определите функцию как

function callback(value){
    console.log(value)
}

тогда вы можете передать обратный вызов вашей функции как

app.locals.someHelper(..,...,callback);

Позвольте мне привести простой пример во фрагменте, вы можете посмотреть на него.

helper = function(val, callback){
    if(val === 1)
        callback(true)
    else 
        callback(false)
}

function callback(value){
    console.log(value)
}

helper(1, callback);
helper(2, callback);
app.locals.someHelper = function(route_name,user_id) {
var permitted = 0;
user.find({user_id:user_id, route_name:route_name}, function(err, user_per){
if(err) return false;
if(typeof user_per != 'undefined' && user_per.length > 0){
        return true;
    }
else {
    return false;
    }
});

}

look at this

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...