Получить {{mondoDB query}}, переданный в шаблон руля, и запустить модуль javascript для получения данных. - PullRequest
0 голосов
/ 15 октября 2019

Я застрял с этим. Я работаю с nodejs, шаблонами руля и mongoDB. В шаблоне руля я пытаюсь установить параметры для выбора, когда изменяется значение другого выбора. Мой первый выбор работает нормально, поэтому я выбираю из него значение, чтобы запустить сценарий для установки параметров во втором выборе. То, что я пытаюсь сделать, это получить переданный {{project_in_query}} в моем коде javascript и создать список проектов, связанных с выбранным пользователем ранее. Я пытался в течение нескольких дней, но все еще не могу получить его.

вот мой код.

file.js

router.get('/upload_images', checkAuthentication, async (req, res) =>{
    const users_in_query = await Users.find({role: 'user'}).sort({date: 'desc'});
    const projects_in_query = await Projects.find({}).sort({date: 'desc'});
    res.render("images/upload_Img.hbs", {users_in_query, projects_in_quey});
}

template.hbs

<select name="user" id="user_list" onchange="setproject()" placeholder="User">
    {{#each users_in_query}}
        <option value="{{username}}">{{username}}</option>
    {{/each}}
</select>

<select name="project_name" id="project_list" onchange="" placeholder="Pick a project">
    <option value="value">Projects goes here</option>    
    // I want to use projects_in_query (passed from file.js) to fill this options, similar to 
   previous select
</select>

<script>
    function setproject() {
        var e = document.getElementById("user_list"); //set a variable for first select
        var user_chosen = e.options[e.selectedIndex].text; // catch the user chosen

        // then loop into **projects_in_query** in order to add options for 
        *user_chosen* into **project_list**  
        Maybe like this... obviously it doesn´t works at all  //

        pl_select = document.getElementById('project_list');
        for each(p in {{projects_in_query}}) {
            if(user_chosen == p.user_in_project){
               var opt = document.createElement('option');
               opt.value = p.project_name;
               opt.innerHTML = p.project_name;
               pl_select.appendChild(opt);
            }
        }
</script>

Надеюсь, что поможет с этим, я буду очень благодарен

...