将 json-schema-faker 架构合并到一个文件中
我正在使用 faker 生成多个模式,并希望将解析的结果合并到一个名为 ./db.json 的文件中,而不是多个文件中,这样我就可以在 json-server 中使用该文件。
我当前将其设置为根据架构文件夹中的架构数量运行和打印多个文件。
const path = require("path");
const fs = require("fs");
const { resolve, extend } = require("json-schema-faker");
extend("faker", () => require("@faker-js/faker"));
var schemasPath = path.join(__dirname, "./schemas");
fs.readdirSync(schemasPath).forEach((file) => {
const name = path.parse(file).name;
const schemas = require(`${schemasPath}/${file}`);
resolve(schemas).then((data) => {
fs.writeFile(`${__dirname}/${name}.json`, JSON.stringify(data), (err) => {
if (err) {
console.log("error = ", err.message);
} else {
console.log("Mock API data generated.");
}
});
});
});
架构示例:
const schema = {
type: "object",
properties: {
users: {
type: "array",
minItems: 10,
maxItems: 10,
uniqueItems: true,
items: {
type: "object",
properties: {
id: {
type: "integer",
initialOffset: 1,
autoIncrement: true,
},
name: {
type: "string",
faker: "name.findName",
},
},
required: ["id", "name"],
},
},
},
required: ["users"],
};
I'm using faker to generate multiple schemas and want to combine the resolved results into one file called ./db.json not multiple files so I can use that file in json-server.
I have it currently setup to run and print out multiple files based on the amount of schemas are in the schema folder.
const path = require("path");
const fs = require("fs");
const { resolve, extend } = require("json-schema-faker");
extend("faker", () => require("@faker-js/faker"));
var schemasPath = path.join(__dirname, "./schemas");
fs.readdirSync(schemasPath).forEach((file) => {
const name = path.parse(file).name;
const schemas = require(`${schemasPath}/${file}`);
resolve(schemas).then((data) => {
fs.writeFile(`${__dirname}/${name}.json`, JSON.stringify(data), (err) => {
if (err) {
console.log("error = ", err.message);
} else {
console.log("Mock API data generated.");
}
});
});
});
schema example:
const schema = {
type: "object",
properties: {
users: {
type: "array",
minItems: 10,
maxItems: 10,
uniqueItems: true,
items: {
type: "object",
properties: {
id: {
type: "integer",
initialOffset: 1,
autoIncrement: true,
},
name: {
type: "string",
faker: "name.findName",
},
},
required: ["id", "name"],
},
},
},
required: ["users"],
};
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于可能遇到这篇文章的其他人来说,这里是我最终解决它的方法。
For anyone else who might run into this post here is how I solved it in the end.