我有这个架构的帐户模型
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是异步的,所以效果不佳
答案 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
});
}