Express API - 从数据库

时间:2017-09-18 10:25:52

标签: api express model-view-controller

我想知道如何实现将参数传递给Model。我有3个文件server.js,controllers / news.js和models / news.js

Server.js

        const newsController = require('./controllers/news');

        server.get('/newsAll', newsController.all);

        server.post('/getOneNews', (req, res) => {
         db.get().query(`SELECT * FROM news WHERE id = ?`, [ req.body.id ], 
          (err, result, fields) => {
            if (err) console.log('error SELECT one row', err);
         });
        });

控制器/ news.js

const newsModule = require('../models/news');

 exports.all = (req, res) => {
  newsModule.all((err, rows) => {
    if (err) {
        console.error(err);
        return res.sendStatus(500);
    }
    res.send(rows);
   });
  };

模型/ news.js

const db = require('../db');

 exports.all = (done) => {
  db.get().query(`SELECT * FROM news ORDER BY id`, (err, rows) => {
    if (err) {
        console.log('error SELECT * FROM news MYSQL', err);
        throw err;
    }
    done(err, rows);
   });
 };

所有关于方法的所有我理解,但我想知道如何将[req.body.id](< - 来自前端)此参数传递给Model以接受来自数据库的ONE新闻。没有参数,这很容易。

1 个答案:

答案 0 :(得分:0)

您需要做的就是从req.params对象中获取id,然后将端点设置为接受该params值。

// Server.js

server.get('/getOneNews/:id', (req, res) => {
  db.get().query(`SELECT * FROM news WHERE id = ?`, [ req.params.id ], 
      (err, result, fields) => {
        if (err) console.log('error SELECT one row', err);
   });
});

希望这有帮助!