【问题标题】:create exactly 1000 unique accounts with mongoose使用 mongoose 创建 1000 个唯一帐户
【发布时间】:2015-05-22 00:00:39
【问题描述】:

我有使用此架构的帐户模型

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 是异步的,因此效果不佳

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案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
        });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 2016-03-11
      • 2020-10-15
      • 2015-02-04
      相关资源
      最近更新 更多