将ExpressJs请求中的参数传递给NodeJ中的另一个文件

时间:2017-07-18 14:32:08

标签: javascript node.js express

首先,谢谢你,请记住,我是Node的新手。

我正在尝试创建一个虚假的json创建者(用于开发目的),并遇到了fakerJs。到目前为止我所做的是:

server.js

const express = require('express')

const User = require('./api/user')

const app = express();
const port = 4000

app.get('/user/:times', (req, res) => {
    res.json(User)
});



app.listen(port, () => {
  console.log(`Server Starts at ${port}`)
})

因此,这需要文件 user.js

const faker = require('faker')

var _name = faker.name.findName();

var _eventTime = faker.date.future();

var User = [];

for(var i = 0; i < 5; i++) {
    var newUser = {
        type: "selling",
        speaker: _name,
        image: faker.name.firstName(),
        title: faker.commerce.productName(),
        description: faker.hacker.phrase(),
        time: _eventTime,
        duration: 5,
        speakerInfo: [
            {
                name: _name,
                bio: faker.lorem.sentences(),
                twitter: null,
                github: null,
                company: null   
            }       
        ],
        eventStart: _eventTime,
        eventEnd: _eventTime,
        eventDuration: 5,
        productImage: [
            faker.image.technics(),
            faker.image.technics()
        ],
        avatarUrl: faker.image.people()
    }
    User.push(newUser);
}

module.exports = User

正如您可以想象的那样,我想要的是调用/ api / user / 10,这将取代for循环中的数字5。

我尝试了不同的选项(还阅读了许多其他类似的问题): - 将功能移至server.js并将其作为req.params.times获取 - 使用app.get('/ user /:times',Users.createUser(10),(req,res)=&gt; {...}

将其发送到user.js文件

我做错了什么以及做这件事的正确方法是什么?

注意:我知道现在我没有将参数时间传递给循环,而是循环5次。我没有花时间,因为我不知道该怎么做,这实际上是我的问题。

提前多多感谢。

1 个答案:

答案 0 :(得分:0)

您不需要传递时间,只需让User用户来处理请求和响应。

<强> server.js

const express = require('express')

const user = require('./api/user')

const app = express();
const port = 4000

app.get('/user/:times', user);        

app.listen(port, () => {
  console.log(`Server Starts at ${port}`)
});

在此模块中,导出处理函数。

<强> user.js的:

const faker = require('faker')

var _name = faker.name.findName();

var _eventTime = faker.date.future();

var User = function(req, res) {
  var users = [];
  for(var i = 0; i < +req.params.times; i++) {
    var newUser = {
        type: "selling",
        speaker: _name,
        image: faker.name.firstName(),
        title: faker.commerce.productName(),
        description: faker.hacker.phrase(),
        time: _eventTime,
        duration: 5,
        speakerInfo: [
            {
                name: _name,
                bio: faker.lorem.sentences(),
                twitter: null,
                github: null,
                company: null   
            }       
        ],
        eventStart: _eventTime,
        eventEnd: _eventTime,
        eventDuration: 5,
        productImage: [
            faker.image.technics(),
            faker.image.technics()
        ],
        avatarUrl: faker.image.people()
    }
    users.push(newUser);
  }
  res.json(users);
}

module.exports = User;