Node.js +猫鼬-每次都不获取数据

时间:2018-09-17 18:04:17

标签: node.js express mongoose

我做了一个下拉列表,它从我从猫鼬获得的一些数据中获取了其链接。

但是它不是持久的。使用完全相同的代码,我不一定总能获得链接的数据。

(实际上我的所有东西都是这样,但是我的下拉菜单很简单)

我的下拉菜单(由EJS和引导程序制成)

<div class="dropdown-menu" aria-labelledby="navdrop">
                        <% schools.forEach((school) => { %>
                            <a href="/skoler/<%= school.adress.city %>" class="dropdown-item"><%= school.name %></a>
                        <% }); %>
                    </div>

(对不起,上面的格式很烂,编辑器不会让我做的更好)。

这是我处理索引页面的途径。

server.get('/', 
    async function(req, res) {
        let schools = await schoolService.getAll();

        res.render('public assets/pages/index', {
            page_title: "Langaming.dk - Index",
            schools: schools
        });
    }
);

这是我的schoolService.getAll();

"getAll": () => {
    return new Promise(function(resolve, reject){
        School.find({}, function (err, schools) {
            if (err)
                return reject(err)
            else 
                return resolve(schools)
        });
    })
}

我会尽力解释一下。当我进入页面时,有时会显示链接,而有时却不显示。 (通常他们不这样做)。一直都是相同的代码。

该项目正在快速运行以进行路线处理。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

由于某种原因,您的数据库可能没有文档(您是否在请求之间清除数据?),并且不会因此而引发错误。

"getAll": () => {
return new Promise(function(resolve, reject){
    School.find({}, function (err, schools) {

        if (err)
            return reject(err)
        if (!schools) { 
            console.log('there are no documents');
            return reject();
        }
        else 
            resolve(schools)
    });
})

}