如何在NodeJS中创建具有唯一ID的路由

时间:2015-05-03 19:17:12

标签: node.js express routes mongoose

所以我正在开发一个带有node,express,mongoose en mongodb的项目。我能够创建/保存主题到数据库。但是当保存/创建主题时,我想将用户重定向到该创建主题的主题详细信息页面(因此基本上每个创建的主题都有基于id的自己的唯一URL,如此 - > localhost:3000 / topicdetail / id)的

我的问题是,在重定向时,我收到一条错误消息:错误:无法查找视图"错误"在views目录" / Users / Grace / Desktop / QA / views"

所以我的主要问题是我是否正确地使用自己的唯一ID重定向它,或者我做错了什么。欢迎任何帮助。

我的代码如下:

var mongoose = require('mongoose');
var Topic = require('../models/topic');
var db = require('../config/database');
var express = require('express');
var router = express.Router();

// render the start/create a new topic view
router.get('/', function(req, res) {
  res.render('newtopic');
});

// save topic to db
router.post('/',function(req, res, next){
console.log('The post was submitted'); 

var topic = new Topic
({
    "topicTitle":       req.body.topicTitle,
    "topicDescription": req.body.topicDescription,
    "fbId":             req.body.userIdFB,
    "twId":             req.body.userIdTW
})

topic.save(function (err, topic)
{
    if(err){
        return next(err)
        console.log('Failed to save the topic to the database');
    }
    else
    {
        console.log('Saved the topic succesfully to the database');
        // each topic has its own unique url 
        res.redirect('/topicdetail/{id}');
    }
})

});

module.exports = router;

1 个答案:

答案 0 :(得分:1)

调用res.redirect('/topicdetail/{id}');不会插入任何ID。 Express不会重新格式化字符串。它采用您定义的重定向,在本例中为/topicdetail/{id}并执行它。就像你将它插入浏览器一样。

要重定向您的详细信息视图,您可以执行以下操作: res.redirect('/topicdetail/' + topic._id);并将topic.id替换为您的文档ID或其他标识符。

提醒一下:您的详细路线需要路线定义中的参数。示例:app.get('/verification/:token', users);:token是你的参数。有关routing guide.

的更多信息