【问题标题】:Nodejs restful API: how to get data by idNodejs RESTful API:如何通过 id 获取数据
【发布时间】:2019-07-29 17:20:43
【问题描述】:

我正在构建一个 node/express 应用程序,我想通过处理 id 参数返回特定数据。

这是我的文件结构:

    app.js
    ./src
      /db/users.js
      controllers
      models
    ./tests

users.js

const users = [
  {
    id: 1,
    email: 'sarah@gmail.com',
    name: 'Sarah',
    phone: 09000082

  },
  {
    id: 2,
    email: 'dklf@gmail.com',
    name: 'Kelavos',
    phone: 08522222

  },
];

export default users;

我的模型

import users from '../db/users';

const findUser = id => users.find(x => x.id === id);

export default { findUser };

我的控制器

import userModel from '../models/user.model';

class UserController {

  /**
 * Get one user
 * @param {object} req
 * @param {object} res
 */

  getUser(req, res) {
    const id = parseInt(req.params.id);
    console.log(`Test: ${  userModel.findUser(req.params.id)  } and ${  req.params.id}`);
    return res.status(201).send({
      status: 'success',
      data: userModel.findUser(id),
    });
// return Not found and 404 for an non existing id or if id !== int
    if (isNaN(id) || !id) {
      return res.status(404).send({
        status: 'error',
        error: 'Not found',
      });
    }
  }
}

const userController = new UserController();
export default userController;

这是我的app.js

import express from 'express';
import bodyParser from 'body-parser';
import UserController from './src/controllers/user.controller';

// set up the express app
const app = express();

// Parse incoming requests data
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

const baseUrl = '/api/v1/';

app.get(`${baseUrl}users/:id`, UserController.getUser);

export default app;

我已经在 server.js 文件中设置了端口和其他配置

如果我运行应用程序并使用 Postman 测试端点,我只会得到 status: "success" 并不是说我评论了 UserController 类的第二块 if (isNaN(id) || !id),因为 ESLint 用它警告我 Unreachable code detected

我的代码有什么问题阻止我返回给定用户的结果?

【问题讨论】:

    标签: node.js express get


    【解决方案1】:

    您使用的对象解构错误。 在您的控制器中,进行以下更改:

    const id = req.params.id;
    

    【讨论】:

    • 我试过这样但还是没什么特别的const id = parseInt(req.params.id);req.params.id默认是string
    • 在你的问题中,写成{ id }
    • 现在可以使用了。我有一点逻辑问题。谢谢你的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2019-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多