带有Node的Mongoose中的默认嵌套集合

时间:2012-08-15 21:41:03

标签: node.js mongodb mongoose

我正在使用Node和MongoDB构建一个应用程序,我有一个公司模型和一个API密钥模型,在Mongoose中看起来像这样:

  var APIKeysSchema = new Schema({
    name: { type: String }
  });

  var CompanySchema = new Schema({
      name            : {type : String, required: true, index: { unique: true }}
    , apiKeys           : [ APIKeysSchema ]
    , created_at      : {type : Date, default : Date.now}
  });

我希望每家公司默认拥有创建公司时生成的一个API密钥。我应该为此编写自定义中间件,还是有一些方法可以在架构本身内完成。谢谢!

1 个答案:

答案 0 :(得分:0)

结束只是在模型中保存时作为中间件:

CompanySchema.pre('save', function(next){
    if(this.get('apiKeys').length < 1){
        //generate API key
        var objectId = new ObjectID();
        this.get('apiKeys').push({ key: objectId.toHexString() });
    }
    next();
  });