ExpressJS PUT方法未定义的对象问题

ExpressJS PUT method undefined objecty issue

本文关键字:对象 问题 未定义 PUT 方法 ExpressJS      更新时间:2023-09-26

我正试图使用PUT方法更新数据库中的记录,但遇到了一个未定义对象的问题。

ReferenceError: blogpost is not defined

我在路由步骤中参考了本教程,并注意到尽管变量在我的/blogs路由中定义,这意味着它是该函数的本地变量,但在本教程中,他们在路由put方法时不会再次定义变量。他们只是调用他们计划更新的对象的属性。我不能访问这个对象有什么原因吗?这是范围问题吗?

routes.js:

  var express = require('express');
    var router = express.Router();
    var blogDB = require('../config/blogDB.js');
    var Blogpost = require('./models/blogModel.js');
    //index
        router.route('/')
        .get(function(req, res) {
        var drinks = [
                {   name: 'Bloody Mary', drunkness: 3 },
                {   name: 'Martini', drunkness: 5 },
                {   name: 'Scotch', drunkness: 10}
            ];
            var tagline = "Lets do this.";
            res.render('pages/index', {
                drinks: drinks,
                tagline: tagline
            });
        });



    //blog
        router.route('/blog') 
            // START POST method
            .post(function(req, res) {
                var blogpost = new Blogpost(); // create a new instance of a Blogpost model
                blogpost.title = req.body.title; // set the blog title
                blogpost.content = req.body.content; // set the blog content
                    //Save Blog Post
                    blogpost.save(function(err) {
                        if (err)
                            res.send(err);
                        res.json({ message: 'Blog created.' });
                    });
            }) // END POST method

            // START GET method
            .get(function(req, res) {
                Blogpost.find(function(err, blogs) {
                    if (err)
                        res.send(err);
                    res.json(blogs);
                });
            }); // END GET method

        //Route for individual blogs
        router.route('/blog/:blogpost_id')
        // START GET method blog by ID  
        .get(function(req, res) {
            Blogpost.findById(req.params.blogpost_id, function(err, blog) {
                if (err)
                    res.send(err);
                res.json(blog);
            });
        }) // END GET method blog by ID
        // START PUT method
        .put(function(req, res) {
            Blogpost.findById(req.params.blogpost_id, function(err, blog) {
                if (err)
                    res.send(err);

                blogpost.title = req.body.title; // update the blog title
                blogpost.content = req.body.content; // update the blog content
                blogpost.save(function(err) {
                    if (err)
                        res.send(err);

                    res.json({ message: 'Blog updated.' });
                });
            });
        });

    //about
        router.get('/about', function(req, res) {
                res.render('pages/about');
        });

    module.exports = router;

产生问题的特定区域:

// START PUT method
    .put(function(req, res) {
        Blogpost.findById(req.params.blogpost_id, function(err, blog) {
            if (err)
                res.send(err);

            blogpost.title = req.body.title; // update the blog title
            blogpost.content = req.body.content; // update the blog content
            blogpost.save(function(err) {
                if (err)
                    res.send(err);

                res.json({ message: 'Blog updated.' });
            });
        });
    });
Blogpost.findById(req.params.blogpost_id, function(err, blog) {

应为:

Blogpost.findById(req.params.blogpost_id, function(err, blogpost) {