【问题标题】:Save multiple model documents in one POST route with Mongoose/Express/Node使用 Mongoose/Express/Node 在一个 POST 路由中保存多个模型文档
【发布时间】:2018-10-25 22:49:32
【问题描述】:

我的搜索模型和结果模型是一对多的关系。我的用户会进行搜索,选择有用的结果,然后点击保存按钮。该保存按钮将触发app.post() 请求。这应该保存一个搜索实例和一个(或多个)选定结果实例。我可以使用以下代码成功保存 Search 实例:

controllers/searchController.js

const Search = require('../models/search');

exports.search_create_post = (req, res) => {
    let newSearch = new Search({ search_text: req.body.search_text });

    newSearch.save((err, savedSearch) => {
        if (err) {
            console.log(err);
        } else {
            res.send(savedSearch);
        }
    })


routes/search.js

const express = require('express');
const router = express.Router();
const search_controller = require('../controllers/searchController');

//Search Routes
router.get('/', search_controller.search_home);

router.get('/results', search_controller.search_results_get);

router.post('/', search_controller.search_create_post);

module.exports = router;


我怎样才能让我的用户点击一次保存按钮将保存上面的搜索实例以及结果?

【问题讨论】:

    标签: node.js mongodb express mongoose


    【解决方案1】:

    我最终通过将两个回调传递到我的post() 路由并在第一个内部调用next() 以及通过req 对象传递第二个所需的数据来完成我需要的操作。我的代码如下:

    routes/search.js

    router.post('/', search_controller.search_create_post, result_controller.result_create_post);
    


    controllers/searchController.js

    exports.search_create_post = (req, res, next) => {
        let newSearch = new Search({ search_text: req.body.search_text });
    
        newSearch.save((err, savedSearch) => {
            if (err) {
                console.log(err);
            } else {
                req.searchData = savedSearch;
            }
              next();
        })
    };
    


    controllers/resultController.js

    exports.result_create_post = (req, 
        let newResult = new Result({ url: 'req.body.url', search: req.searchData });
    
        newResult.save((err, savedResult) => {
            if (err) {
                console.log(err);
            } else {
                res.send(savedResult);
            }
        })
    };
    

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 2018-04-01
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多