使用mongoose创建1000个唯一帐户

时间:2015-05-21 15:49:05

标签: node.js mongodb mongoose

我有这个架构的帐户模型

var schema = new mongoose.Schema({
  username: { 
    type: String, 
    unique: true,
    index: true
  },
});

var Account = mongoose.model("Account", schema);

在我的app.js我有这段代码

for(var i = 0; i < 1000; i++) {
  var account = new Account({username: random()});
}

但是random()可能会生成重复值,因为用户名是唯一的,它不会保存,所以我怎么能创建1000个帐号?

我尝试了一些方法,比如在保存帐户之前检查数据库中是否存在random()值,如果存在则重新创建新的,但因为mongoose是异步的,所以效果不佳

1 个答案:

答案 0 :(得分:1)

如果你看看Mongoose's home page他们有这个例子:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

var Cat = mongoose.model('Cat', { name: String });

var kitty = new Cat({ name: 'Zildjian' });
kitty.save(function (err) {
  if (err) // ...
  console.log('meow');
});

保存kitty时,您可以传入一个回调函数,告诉您它是否成功。因此,如果失败,您可以再试一次(可能是使用不同的用户名)。在您的示例中,您可以执行以下操作:

for(var i = 0; i < 1000; i++) {
    createAccount();
}

function createAccount() {
    var account = new Account({username: random()});
    account.save(function(err) {
        if (err)
            createAccount(); //try again
    });
}