Повторите данные из Express в EJS

#javascript #node.js #json #express #ejs

Вопрос:

Я действительно в замешательстве из-за этого:

 <script>
    const i = 0
    const data = "<%= dataMedico[0].user %>" // Fine
    const data2 = `<%= dataMedico[${i}].user %>` // Error
</script>
 

Предполагается, что второй использует константу «i«, чтобы вернуть мне значение «пользователь«, но он возвращает мне только эту ошибку:

Синтаксическая ошибка: Неожиданный токен «{» в файле myRootviewsindex.ejs при компиляции ejs

Мне нужно повторить dataMedico, чтобы сравнить пользователей с данными такой формы:

 function verificator() {
        for(let i = 0; i < 10; i  ) {

            const userMedicos = `<% dataMedico[${i}].usuario %>`
            const passwordMedicos = `<% dataMedico[${i}].contrasenia %>`

            const text = document.getElementById("user").value
            const pass1 = document.getElementById("password").value

            if (text === userMedicos amp;amp; pass1 === passwordMedicos) {
                button.href = "principal"
            } else {
                alert("ERROR.");
            }
        }
    }
 

Вы рекомендуете мне другой способ сделать это проще?

Комментарии:

1. Строка шаблона Javascript вычисляется, когда ваш Javascript анализируется браузером, А НЕ когда страница отображается с помощью EJS.

Ответ №1:

Строка шаблона Javascript вычисляется, когда ваш Javascript анализируется браузером, А НЕ когда страница отображается с помощью EJS. Если конечная цель здесь состоит в том, чтобы заставить вашу verificator() функцию работать в Javascript на вашей веб-странице, то вам нужно будет преобразовать все dataMedico данные в переменную в Javascript страницы с помощью EJS.

Затем Javascript вашей страницы может ссылаться на эти данные, как на данные любой переменной Javascript.

Итак, вот как вы внедряете dataMedico данные на свою страницу в качестве переменной Javascript.

 <script>
    const dataMedico = <%- JSON.stringify(dataMedico) %>;
</script>
 

Затем вы можете использовать это в своей verificator() функции следующим образом:

 <script>

function verificator() {
        for(let i = 0; i < 10; i  ) {

            const userMedicos = dataMedico[i].usuario;
            const passwordMedicos = dataMedico[i].contrasenia;

            const text = document.getElementById("user").value
            const pass1 = document.getElementById("password").value

            if (text === userMedicos amp;amp; pass1 === passwordMedicos) {
                button.href = "principal"
            } else {
                alert("ERROR.");
            }
        }
    }

</script>
 

Пожалуйста, обратите внимание, что verificator() функция, по-видимому, является неполной. Вы запускаете цикл 10 раз, но else alert() , возможно, у вас получится целых 10 раз. Я предполагаю, что на самом деле вы этого не хотите.