Передача документов mongoose для просмотра и использования в скрипте tag node.js - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть приложение, работающее в Node.js с Express, и я хотел динамически изменить параметры выбора объекта с помощью jquery. На самом деле это не большая проблема, но у меня проблемы с использованием параметров res.render (которые являются документами mongoose) в теге script. Я использую их без каких-либо проблем в html (на самом деле jade), но в теге script я получаю проблему, когда ObjectId не является строкой.

Это фрагмент кода: На сервере:

router.get("/new", function(req, res){
res.render("session/documentos/new", 
    {
        services: res.locals.services
    });
});

На виду

block content
div
    h1(class="text-center") New document
    form(id="newDoc" action="/session/documentos" method="POST")
        div(class="tab") Service:
            div(class="form-group") 
                select(class="form-control" name="svc" id="svc")
                    option(value="undefined" disabled selected) Choose one
                    for service in services
                        option(value=service._id)=service.name

script.
    $(document).ready(function() {
        var sessLenght = 0;
        var selectedSvc = #{services};
        $("#svc").change(function(){
            console.log("Service changed: " + selectedSvc);
        });
});

И это ошибка, которую я получаю: Ошибка консоли

А в источниках: Ошибка источника в ObjectId

Так что я могу без проблем использовать коллекцию документов "services", но при попытке использовать их в теге script у меня возникают проблемы с элементом ObjectId.

Я думал, что одним из вариантов будет преобразование в строковый ObjectId при запросе к базе данных, но я думаю, что может быть более чистое решение для этого. Какой может быть лучший способ решить проблему?

Любые мысли приветствуются! Заранее спасибо

1 Ответ

0 голосов
/ 08 ноября 2018

Попробуйте изменить var selectedSvc = #{services};

до var selectedSvc = !{services};

или var selectedSvc = !{JSON.stringify(services)};

...