首页 > 解决方案 > 试图了解此 Node.js 代码的哪一部分负责将我的 POST 请求定向到 mongoose/mongodb 服务器?

问题描述

所以我是编程新手,我正在学习关于 Web 开发的 Udemy 课程。我正在学习这门课程,但这段代码中有一些我不明白的地方。我设置了一个 MongoDB 数据库,并且正在使用带有 NPM 包管理器的 Node.js。我可以清楚地看到 server.js 文件是如何链接到数据库的:

var db = mongoose.connect('mongodb://localhost/swag-shop');

我可以清楚地看到 server.js 如何从该app.post()部分的前端应用程序中拉入 POST 请求。

我看不到的是,一旦将 POST 拉入文件的逻辑,server.js将 POST 中的 json 信息引导到 MongoDB 数据库中是什么?它正在进入那里。当我过去mongosh直接查看数据库时它就在那里,但我不明白它实际上是如何进入的。谢谢大家的帮助。

server.js:

    var express = require('express');
    var app = express();
    var bodyParser = require('body-parser');
    var mongoose = require('mongoose');
    var db = mongoose.connect('mongodb://localhost/swag-shop');  
    var Product = require('./model/product');
    var WishList = require('./model/wishlist');
    const { request } = require('express');
    
    
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({extended: false}));
    
    app.post('/product', function(request, response) {
        var product = new Product();
        product.title = request.body.title; 
        product.price = request.body.price; 
    
    
        product.save(function(err, savedProduct) {
            if (err) {
                response.status(500).send({error:"Could not save product"})
            } else {
                response.status(200).send(savedProduct);
            }   
        });
    });
    
    
    app.listen(3000, function () {
        console.log("Swag Shop API running on port 3000...");
    });

产品.js:

    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;
    
    var product = new Schema({
        title: String,
        price: Number,
        likes: {type: Number, default: 0}
    });
    
    module.exports = mongoose.model('Product', product);

愿望清单.js:

    var mongoose = require('mongoose');
    const product = require('./product');
    var Schema = mongoose.Schema;
    var ObjectId = mongoose.Schema.Types.ObjectId;
    
    var wishList = new Schema ({
        title: {type: String, default: "Cool Wish List"},
        products: [{type: ObjectId, ref:'Product'}]
    });
    
    module.exports = mongoose.model('WishList', wishList);

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


您正在使用Mongoose包连接到 MongoDB 服务器并执行各种查询。因此,当您这样做时product.save()Mongoose将在数据库中创建一条新记录。


推荐阅读