2015-05-21 120 views
0

正是1000唯一帐户我的帐户模型,这个模式创建与猫鼬

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()值存在于数据库中,如果存在,创建新的rescusivly而是因为猫鼬是异步的。如果你在Mongoose's home page看看他们,这是不能很好的工作

回答

1

下面这个例子:

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 
    }); 
}