nodejs mongo,生成测试数据

时间:2012-10-11 00:21:44

标签: node.js mongoose test-data

我想用一些测试数据填充我的mongo。

我已经定义了猫鼬模型,如果可以使用预定义模型以实用方式创建mongo文档,我就会徘徊。

例如,模型项

var Schema = mongoose.Schema;

var Items = new Schema({
    title:      { type: String, required: true },
    desc:       { type: String}
});

2 个答案:

答案 0 :(得分:2)

当然,在单用途节点应用程序中执行此操作。创建一个不使用express或任何Web框架的新应用程序,而只是拥有模型定义和数据库连接。

您当然需要一个测试数据的数据源,您可以使用随机字生成器,如下所示:http://james.padolsey.com/javascript/random-word-generator/

function createRandomWord(length) {
    var consonants = 'bcdfghjklmnpqrstvwxyz',
        vowels = 'aeiou',
        rand = function(limit) {
            return Math.floor(Math.random()*limit);
        },
        i, word='', length = parseInt(length,10),
        consonants = consonants.split(''),
        vowels = vowels.split('');
    for (i=0;i<length/2;i++) {
        var randConsonant = consonants[rand(consonants.length)],
            randVowel = vowels[rand(vowels.length)];
        word += (i===0) ? randConsonant.toUpperCase() : randConsonant;
        word += i*2<length-1 ? randVowel : '';
    }
    return word;
}

然后你需要像这样填充数据库:

var numTestDocs = 100; // or however many you want
for(var i = 0; i < numTestDocs; i++) {
   var someLength = 12; // Alternatively, you could use a random number generator
   var randomWord = createRandomWord(someLength);
   var item = new Item ({
      title : randomWord ,
      desc  : randomWord + ' is just a test'
   });
   item.save(function(err, doc) {
      // do error handling if you want to
      console.log('Test Record Saved with id: ' + doc._id);
   });
}

然后只运行该节点应用程序。

答案 1 :(得分:0)

使用不同的猫鼬模块有很多方法可以做到这一点。 去检查猫鼬伪造。

https://www.npmjs.org/package/mongoose-fakery