Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在mongodb中设置假数据以进行测试_Node.js_Mongodb_Testing_Mongoose_Database - Fatal编程技术网

Node.js 在mongodb中设置假数据以进行测试

Node.js 在mongodb中设置假数据以进行测试,node.js,mongodb,testing,mongoose,database,Node.js,Mongodb,Testing,Mongoose,Database,我们有一个项目,我们需要为功能测试创建一个假数据库和假数据。最初,我们从一个脚本开始,该脚本使用mongoose创建实体,初始化它们并保存它们 var StudentA = new Student(); StudentA.name = "Bob"; StudentA.surname = "Marley"; StudentA.save(); 随着应用程序的增长和文档之间关系的增加,这个脚本变得一团糟。现在,就我们投资于应用程序开发的时间而言,它构成了一个瓶颈 问题是,有没有更好的方法?e、 g.

我们有一个项目,我们需要为功能测试创建一个假数据库和假数据。最初,我们从一个脚本开始,该脚本使用mongoose创建实体,初始化它们并保存它们

var StudentA = new Student();
StudentA.name = "Bob";
StudentA.surname = "Marley";
StudentA.save();
随着应用程序的增长和文档之间关系的增加,这个脚本变得一团糟。现在,就我们投资于应用程序开发的时间而言,它构成了一个瓶颈

问题是,有没有更好的方法?e、 g.以更结构化的方式向数据库填充数据的库?或者我们应该像解析csv文件一样解析一个文件,然后将其推送到mongo


问题是mongodb,但它可以推广到任何需要填充伪数据的非SQL数据库中。(使用类似SQL的RDBMS语法更简单)

您可以尝试编写json文件而不是代码,并使用mongoimport重新创建数据库。 这比冗长重复的代码更容易维护。

这是MongoDB提供的json文件

您可以使用以下方法
mongoimport
it:

mongoimport --db testDB --collection testCollection --file test.json

有关Mongoimport的更多详细信息,请参见。

我同意上述解决方案,并认为最好的方法是:

  • 使用库工具生成假信息
  • 将假信息转换为json文件
  • 使用mongoimport将其上载到mongo
  • 我发现有一些库允许你免费生成假的数据,比如Faker.js(如果你熟悉node.js和js),或者你可以在这里使用Faker的免费java版本:

    我在这里也找到了一个付费的解决方案:但我不知道为什么会有人愿意为此付费,因为生成假数据相当容易——这里有一个逐步的指南

    将faker java库和json编写器导入到您的项目中(我使用的是gradle,下面是gradle代码):

    使用下面的java代码生成任意数量的伪对象,这里我使用一个循环生成3个对象,并将其保存到一个json.xml文件中

    public class FakerTest {
        static FileWriter file;
        public static void main(String[] args) {
            try {
                file = new FileWriter("c:\\<Your Location>\\test.json"); //try opening the file
                for (int i = 0; i < 3; i ++) {
                    Faker faker = new Faker();
                    JSONObject obj = new JSONObject();
                    obj.put("Name", faker.name.firstName());
                    obj.put("address",faker.address.streetAddress());
                    obj.put("email",faker.internet.email());
                    file.write(obj.toJSONString());
    
                }
                file.flush();
                file.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    公共类伪造测试{
    静态文件编写器文件;
    公共静态void main(字符串[]args){
    试一试{
    file=newfilewriter(“c:\\\\test.json”);//尝试打开文件
    对于(int i=0;i<3;i++){
    伪造者伪造者=新伪造者();
    JSONObject obj=新的JSONObject();
    obj.put(“Name”,faker.Name.firstName());
    obj.put(“地址”,faker.address.streetAddress());
    obj.put(“email”,faker.internet.email());
    write(obj.toJSONString());
    }
    flush()文件;
    file.close();
    }捕获(IOE异常){
    e、 printStackTrace();
    }
    }
    }
    
    json文件的结果:

    {“地址”:“790墨菲 Vista”,“电子邮件”:willa@schmittjenkinsandabernathy.net“,”姓名“:”克里斯托普“}{”地址“:”7706 拉金 River“,”email“:”martin_carter@ryanbartellandeffertz.com,“姓名”:“布雷登”}{“地址”:“1893年” 贾马库斯 “休息”,“电子邮件”:“卡西迪”_kris@ziemeankundingandblick.com,“姓名”:“Marlee”}

    现在,用mongoimport上传它

    faker库将允许您生成大量字段,请参阅:


    更多的例子以及api文档可以在这里找到。请在左上角的下拉列表中选择适当的版本


    谢谢,但我宁愿使用自己的数据模型。在我的数据模型中,它不应该是一个随机数据,而是一个随机数据。这听起来足够健壮。在这种方法中是否有一种管理文档关系的简单方法?e、 g每个学生都有一个学校id作为字段。在我的脚本中,mongoose处理这个id创建阶段(仅当您创建对象时)-在这种方法中,我是否需要手动将id设置为学校并在json文档中链接它们?是的,您必须手动维护关系。请记住,
    \u id
    不需要是ObjectId。它可以是任何东西,只要它是独一无二的。所以
    school.json
    可以包含:
    {id:1,name:“Foo”}
    student.json
    可以包含
    {code>{id:“student\u 1”,school\u id:1,name:“John”}
    。记住尝试嵌入文档,而不是创建“类似SQL的连接”。此外,我会使用不同(小)的json文件来确保我的所有测试保持独立,以避免庞大的数据集。我相信这是最好的方法,它并不完美,但目前还没有其他解决方案。
    public class FakerTest {
        static FileWriter file;
        public static void main(String[] args) {
            try {
                file = new FileWriter("c:\\<Your Location>\\test.json"); //try opening the file
                for (int i = 0; i < 3; i ++) {
                    Faker faker = new Faker();
                    JSONObject obj = new JSONObject();
                    obj.put("Name", faker.name.firstName());
                    obj.put("address",faker.address.streetAddress());
                    obj.put("email",faker.internet.email());
                    file.write(obj.toJSONString());
    
                }
                file.flush();
                file.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }