如何使用 Node.js 在几秒钟内生成模拟数据,以便在任何应用程序中使用
介绍
在大多数应用程序中,您需要一些静态 JSON 数据,以便创建和测试应用程序,而无需直接使用生产数据。
如果您正在构建电子商务应用程序,您可能需要一份包含产品名称、图片和价格的产品详细信息列表来进行测试。
如果你想展示某些内容,那么首先你需要一些数据来显示在用户界面上。
截至 2020 年 8 月 20 日,Faker 的每周下载量约为 140 万次。
因此,在本教程中,您将看到如何使用一个非常流行的 npm 库轻松生成任意数量的所需数据faker。
更新:Faker npm 包已不再可用。您可以改用faker-js,它与 faker 功能类似。
先决条件
完成本教程,您需要以下物品:
- 本地已安装 Node.js
本教程已使用Nodev13.14.0、npmv6.14.4、fakerv4.1.0、expressv4.17.1、lodashv4.17.19 和nodemonv2.0.4版本进行验证。
安装
要安装该库及其他依赖项,请在终端中执行以下命令:
npm install faker@4.1.0 express@4.17.1 lodash@4.17.19 nodemon@2.0.4
按以下方式导入库
const faker = require('faker');
使用 API
以下是该库提供的一些 API 类别。
- 地址
- 商业
- 公司
- 数据库
- 金融
- 黑客
- 助手
- 图像
每个类别都提供不同的数据访问功能。
获取随机的国家、城市、州/省和邮政编码:
const country = faker.address.country(); // Singapore
const city = faker.address.city(); // Laverneberg
const state = faker.address.state(); // West Virginia
const zipCode = faker.address.zipCode(); // 57449-4128
获取随机产品名称、价格和颜色:
const product = faker.commerce.product(); // Table
const price = faker.commerce.price(); // 458.00
const color = faker.commerce.color(); // Cyan
让我们用 Node.js 构建一个简单的应用程序,你提供想要的记录数,应用程序将以 JSON 格式生成相应数量的数据。
初始设置
创建一个新文件夹mock-json-data-generator并初始化package.json文件
mkdir mock-json-data-generator
cd mock-json-data-generator
npm init -y
现在,安装faker、lodash和expressnpmnodemon库
faker将用于生成随机模拟数据lodash将用于执行函数若干次express将用于创建 REST APInodemon如果任何文件内容发生更改,将使用此方法重启 Express 服务器。
从该文件夹执行以下命令mock-json-data-generator:
npm install faker@4.1.0 lodash@4.17.19 express@4.17.1 nodemon@2.0.4
在文件start中添加新脚本package.json
"scripts": {
"start": "nodemon index.js"
}
您的package.json文件现在看起来会是这样。
获取随机地址列表
创建一个新index.js文件,并在其中添加以下代码:
const express = require('express');
const faker = require('faker');
const _ = require('lodash');
const app = express();
app.get('/address', (req, res) => {
const count = req.query.count;
if (!count) {
return res
.status(400)
.send({ errorMsg: 'count query parameter is missing.' });
}
res.send(
_.times(count, () => {
const address = faker.address;
return {
country: address.country(),
city: address.city(),
state: address.state(),
zipCode: address.zipCode(),
latitude: address.latitude(),
longitude: address.longitude()
};
})
);
});
app.listen(3030, () => {
console.log('server started on port 3030');
});
在上述文件中,
- 首先,我们导入了所有必需的软件包。
- 然后通过调用该
express函数创建了一个 Express 应用。
const app = express();
- 然后创建了一条
/address路线 - 然后,我们会检查用户是否提供了
count查询参数,该参数指定要返回的记录数。
const count = req.query.count;
if (!count) {
return res
.status(400)
.send({ errorMsg: 'count query parameter is missing.' });
}
- 如果该对象
count不存在,则会显示错误消息。 - 然后我们使用Lodash 库
times提供的方法lodash,该方法会执行指定函数count若干次。Lodash 库针对性能进行了优化,因此,map例如,要生成 1000 条记录,我们不使用数组方法,而是使用lodashLodash 库,这样响应速度会更快。
_.times(count, () => {
const address = faker.address;
return {
country: address.country(),
city: address.city(),
state: address.state(),
zipCode: address.zipCode(),
latitude: address.latitude(),
longitude: address.longitude()
};
})
- 该
times方法返回一个数组。在提供的箭头函数中,我们返回一个包含随机生成值的对象,因此该方法的输出times将是一个包含生成值的对象数组。 - 然后我们使用
send响应对象的方法发送该结果。res.send - 最后,我们会
Express.js在端口上启动服务器。3030
app.listen(3030, () => {
console.log('server started on port 3030');
});
现在,请在终端中执行以下命令启动应用程序:
npm run start
访问http://localhost:3030/address?count=10即可访问该应用程序。
提示:要获得如上所示的格式化 JSON,您可以安装 JSON Formatter Google Chrome 扩展程序。
如果您不提供count查询参数,则会收到如下所示的错误。
获取随机产品列表
添加另一条/products获取产品列表的路径。
app.get('/products', (req, res) => {
const count = req.query.count;
if (!count) {
return res.status(400).send({
errorMsg: 'count query parameter is missing.'
});
}
res.send(
_.times(count, () => {
const commerce = faker.commerce;
return {
product: commerce.product(),
price: commerce.price(),
color: commerce.color()
};
})
);
});
在这段代码中,faker.address我们没有使用 ` `,而是使用了faker.commerce` 及其相关方法`。
获取随机图片列表
添加另一条/images获取图片列表的路径。
app.get('/images', (req, res) => {
const count = req.query.count;
if (!count) {
return res.status(400).send({
errorMsg: 'count query parameter is missing.'
});
}
res.send(
_.times(count, () => {
const image = faker.image;
return {
image: image.image(),
avatar: image.avatar()
};
})
);
});
获取随机单词列表
添加另一条/random路径以获取随机单词列表。
app.get('/random', (req, res) => {
const count = req.query.count;
if (!count) {
return res.status(400).send({
errorMsg: 'count query parameter is missing.'
});
}
res.send(
_.times(count, () => {
const random = faker.random;
return {
word: random.word(),
words: random.words()
};
})
);
});
在这段代码中,我们使用了faker.random及其相关方法。
获取随机用户列表
添加另一/users条路由以获取随机用户列表。
app.get('/users', (req, res) => {
const count = req.query.count;
if (!count) {
return res.status(400).send({
errorMsg: 'count query parameter is missing.'
});
}
res.send(
_.times(count, () => {
const user = faker.name;
return {
firstName: user.firstName(),
lastName: user.lastName(),
jobTitle: user.jobTitle()
};
})
);
});
在这段代码中,我们使用了faker.name及其相关方法。
获取随机 Lorem Ipsum 文本列表
添加另一条/lorem路线以获取随机 lorem ipsum 段落列表。
app.get('/lorem', (req, res) => {
const count = req.query.count;
if (!count) {
return res.status(400).send({
errorMsg: 'count query parameter is missing.'
});
}
res.send(
_.times(count, () => {
const lorem = faker.lorem;
return {
paragraph: lorem.paragraph(),
sentence: lorem.sentence(),
paragraphs: lorem.paragraphs()
};
})
);
});
在这段代码中,我们使用了faker.lorem及其相关方法。
获取随机用户信息列表
Faker该库还提供了一组辅助函数,例如createCard,,。userCardcreateTransaction
添加另一条/userCard路线,以获取包含用户信息(如姓名、电子邮件、地址、网站、公司)的随机卡片列表。
app.get('/userCard', (req, res) => {
const count = req.query.count;
if (!count) {
return res.status(400).send({
errorMsg: 'count query parameter is missing.'
});
}
res.send(
_.times(count, () => {
const helpers = faker.helpers;
return {
userCard: helpers.userCard()
};
})
);
});
在这段代码中,我们使用了faker.helpers它的userCard方法。
除了上述用户详细信息外,如果我们想要获取用户的帖子和交易详情,可以使用createCard辅助方法。
除了其他详细信息外,还要添加另一/createCard条路由来获取用户帖子和交易数据。
app.get('/createCard', (req, res) => {
const count = req.query.count;
if (!count) {
return res.status(400).send({
errorMsg: 'count query parameter is missing.'
});
}
res.send(
_.times(count, () => {
const helpers = faker.helpers;
return {
createCard: helpers.createCard()
};
})
);
});
在这段代码中,我们使用了faker.helpers它的createCard方法。
Faker还提供了很多其他详细信息,您可以在此网址查看。
结论
正如你所见,该Faker库提供了许多 API 函数,可以轻松生成随机数据。当你想要快速构建某些东西,而又不想浪费数小时来创建要使用的数据时,它也非常有用。
您可以在这里找到此应用程序的完整源代码。
别忘了订阅我的每周新闻简报,直接在您的收件箱中接收精彩的技巧、窍门和文章。点击此处订阅。
文章来源:https://dev.to/myogeshchavan97/how-to-generate-mock-data-within-seconds-using-node-js-2e4l











