无法在快速 nodejs 应用程序的视图中显示数据

Cannot display data in a view in a express nodejs app

本文关键字:视图 显示 数据 应用程序 nodejs      更新时间:2023-09-26

我是表达和节点的新手,我正在创建一个简单的快速应用程序,用于获取存储在json文件中的数据,在我的帖子/详细信息视图上,存储的数据没有呈现。我相信是我从 json 文件中提取数据的方式,但我看不到错误在哪里?

这是代码:

帖子.json

[
    {
        "name": "first name",
        "description": "test first description",
        "slug": "first-name",
        "id": "2f065d59"
    },
   {
        "name": "second name",
        "description": "test second description",
        "slug": "second-name",
        "id": "0071b034"
    }
]

帖子列表.js

var express = require('express');
var Creatordb = require('./database/posts.json');
var fs = require('fs');
var uuid = require('node-uuid');
var list = function () {
return Creatordb;
};
var getById = function (id) {
     for(var i=0;i<Creatordb.length;i++) {
         var id = Creatordb[i].id;
   }
return id;
};
exports.list = list;
exports.getById = getById;

帖子.js

var express = require('express');
var router = express.Router();
var db = require('./postslist');
var fs = require('fs');
exports.index = router.get('/',function (req, res) {
    res.render('post/index', { posts: db.list()});
});
exports.form = router.get('/create',function (req, res) {
    res.render('post/form');
});
exports.details = router.get('/details/:id',function (req, res, next) {
    console.log(req.body.name);
    console.log(req.body.description);
    console.log(req.body.id);
    //console log gives me this:
    undefined
    undefined
    undefined
    var post = db.getById(req.params.id);
    res.render('post/details', {post:post});
    });
module.exports = router;

应用.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var uuid = require('node-uuid');
var routes = require('./routes/index');
var post = require('./routes/post');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use('/', routes);
app.use('/post', post);
module.exports = app;

我可以很好地访问帖子/详细信息/:id 路由,但名称描述和其他参数不显示。谁能向我解释一下我在这里错过了什么?-谢谢。

更正 getById 函数

    var getById = function (id) {
      for(var i=0;i<Creatordb.length;i++) {
        if(Creatordb[i].id == id){
          return Creatordb[i];
        }
      }
    };