节点路由间歇性工作

问题描述 投票:0回答:2

使用节点我在创建 2 条路由时遇到了麻烦。 有时 1 个有效,而另一个则无效。有时另一个有效,而第一个无效。有时两者都不起作用。 浏览器只是旋转并超时。 我没有对它们进行任何更改。

我的路线有问题

/viewRecords/bne & /viewRecords/ssc

/ & /viewRecords 工作正常。

这是我创建的路线的当前版本。 我也做了不同的路线,结果相同。 例如:router.get('/bne') & router.get('/ssc')

服务器.js

const express = require('express');
const app = express();
    const Datastore = require('nedb');
    const expressLayouts = require('express-ejs-layouts');

const bneDB = new Datastore('databases/BNE.db');
const sscDB = new Datastore('databases/SSC.db');
    bneDB.loadDatabase();
    sscDB.loadDatabase();

const port = process.env.PORT || 3000;

app.set('view engine', 'ejs');
app.set('views', `${__dirname}/views`);
app.set('layout', 'layout/layout');

app.use(expressLayouts);
app.use(express.static('public'));
app.use(express.urlencoded({ extended: true }));
app.use(express.json({ limit: '1mb' }));

app.listen(port, () => console.log(`Server started on port ${port}`));

const registerRoute = require('./routes/register');
    app.use('/', registerRoute);

const viewRecordsRoute = require('./routes/viewRecords');
    app.use('/viewRecords', viewRecordsRoute);

viewRecordsRoute.js

const express = require('express');
    const router = express.Router();
const Datastore = require('nedb');

const bneDB = new Datastore('databases/BNE.db');
const sscDB = new Datastore('databases/SSC.db');
    bneDB.loadDatabase();
    sscDB.loadDatabase();

router.get('/', (request, response) => {
    response.render('viewRecords.ejs');
});

router.get('/:id', (request, response) => {
    if (request.params.id == "bne") {
        bneDB.find({}, (err, output) => {
            if (err) {
                console.log(err);
                    return;
            }
            response.render('siteRecords.ejs', {
                site: 'Redbank',
                records: output
            });
                return;
        });
    }
    else {
        sscDB.find({}, (err, output) => {
            if (err) {
                console.log(err);
                    return;
            }
            response.render('siteRecords.ejs', {
                site: 'Column',
                records: output
            });
                return;
        });
    }
});

module.exports = router;
node.js express ejs
2个回答
1
投票

我相信这是 nedb 的局限性。 当我删除 nedb 时,一切正常。 我将数据库的大小减半,一切正常。 我最终迁移到 mongo db,一切正常。 看来我真的已经达到了 nedb 的极限。

我已经在较小的项目中使用 nedb 很长一段时间了,没有出现任何问题。 这恰好变得越来越大。


0
投票

在您的示例中,有问题的路由是运行数据库查询的路由。如果发生错误,您只需 console.log 错误,但不会将任何内容作为响应返回到浏览器。不要单独使用

return;
,而是尝试使用
return response.send(err);
,这样可以确保始终将某些内容发送到浏览器。

当然,你也可以通过其他方式处理错误。

© www.soinside.com 2019 - 2024. All rights reserved.