2017-02-08 11 views
0

ユーザーIDに基づいてテンプレートを保存しようとしていますが、テンプレートを保存してユーザーIDで保存するとき、どうすればいいですか?_id?私はUsertemplateSchemaへの参照を追加しました。mongooseを使ってユーザーIDに基づいて文書を保存する方法は?

user.model.js

var UserSchema = new mongoose.Schema({ 
    _id: { type: String, required: true, index: {unique: true}}, 
    firstName: String, 
    lastName: String, 
    type: String, 
    groups:[{type: String, ref: 'Group', required: false}] 
}, 
    { 
    toObject: { 
     virtuals: true 
    }, 
    toJSON: { 
     virtuals: true 
    } 
    }); 

export default mongoose.model('User', UserSchema); 

template.model.js

var User = require('../user/user.model.js'); 

var TemplateSchema = new mongoose.Schema({ 
    _id: { type: String, required: true}, 
    name: String, 
    id: String, 
    appliesTo: [], 
    properties: [], 
    createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User'} 
}); 


export default mongoose.model('Templates', TemplateSchema); 

template.controller.js

var eTemplate = require('./template.model'); 

export function create(req, res) { 
    console.log(req.body); 
    eTemplate.createAsync(req.body) 
    .then(responseWithResult(res, 201)) 
    .catch(handleError(res)); 
} 

答えて

0

マングースと呼ばれる2つの組み込み機能を有します文書を保存する前(前)と後(後)に保存します。私のアドバイスはそれらを利用することです。ここでは、ユーザ文書を保存する前にシーケンス番号を検索するコードの例を示します。同じことができます:テンプレートを保存するときに、データベースにユーザーIDを要求します(逆も同様です)。あなたは1つを保存して、idを取得し、もう一方を保存することさえできます。

ベローがシーケンスとユーザーのための私のコードに従います。

var UserSchema = new Schema({ 
username: { type: String, required: true, unique: true }, 
id: { type: String }, 
... 
}); 

UserSchema.pre('save', function(next) { 
    let doc = this;  
    let id = 'userSeq'  

    Sequence.findByIdAndUpdate(id, { $inc : {nextSId : 1} }, function(error,data) {   
    if(error) 
     next(error)    
    doc.id = data.nextSId-1; 
    next(); 
    })   
}); 

私の回答があなたに役立つことを願っています。プレゼンテーションとポストは、ドキュメントの更新があった場合には呼び出されません。

関連する問題