2012-08-15 66 views
0

我建立与节点和MongoDB的应用程序,我有一个像这样的猫鼬公司模型和API密钥模式:默认嵌套集合中猫鼬与节点

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密钥。我应该为此编写自定义中间件,还是有一些方法可以在模式本身内部完成。谢谢!

+0

您是否尝试过加入'默认:'功能'apiKeys'创建你要找的默认项? – JohnnyHK 2012-08-15 22:07:20

+0

我刚刚结束添加中间件 – dshipper 2012-08-16 16:56:43

回答

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(); 
    }); 
+0

每次保存文档时都不会添加其他条目到'apiKeys'吗? – JohnnyHK 2012-08-16 17:00:50

+0

是的......事后意识到。将其更改为添加检查以查看是否已经存在... – dshipper 2012-08-16 20:17:08