2017-02-08 10 views
0

初めて私はmongooseでrefrenceを使用しようとしているので、私はユーザーIDでテンプレートを保存するかどうかを理解しようとしています。クライアントからのcreatedBy値を取得する必要がありますか?templateSchemaに挿入される方法。基本的に私はユーザIDを_idに保存したいと思っています。テンプレートを保存することができましたが、何もエラーが出ず、createdByプロパティがテンプレートコレクションに保存されませんでした。 mongooseでrefrencingを理解するための任意のlaymanの説明と私はそれを下のコードで動作させることができますどのように。マングースでのコレクション参照はどのように機能しますか?

user.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 
    } 
    }); 

template.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'} 
}); 

templateCtrl.js

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

var templatesJavaClass = { 
      "_id": 12586, 
      "name": "Java Class", 
      "id": "javaClass", 
      "appliesTo": [ 
       "bpmn:UserTask" 
      ], 
      "properties": [{ 
       "label": "Java Package Name", 
       "type": "String", 
       "editable": true, 
       "binding": { 
        "type": "property", 
        "name": "camunda:class" 
       } 
      }], 
     "createdBy": "user1" 
     } 

var template = new eTemplate(templatesJavaClass); 

template.save(function(error){ 
    console.log("successfully saved template"); 
    if (error){ 
    console.log(error); 
    } 
}); 
+0

はこれを試してみてください? –

+0

あなたが他のコレクションへの参照を使用するときに理解しようとしていることthats私は 'templateSchema'にクライアントからのIDを送信する必要があります – hussain

+0

あなたは_idを他のフィールドと同様にcreatedbyフィールドに保存する必要があります。ユーザー_idはありますか? –

答えて

0

/セーブを作成しながら、あなたはtemplate文書のcreatedByフィールドにユーザー_idを配置する必要がありそれ。

また、タイプがObjectIdで、stringでないことを確認してください。それ以外の場合は、Cast Errorが返されます。どのようにテンプレートドキュメントでユーザー_idを保存しようとしているされている

var templatesJavaClass = { 
    "_id": 12586, 
    "name": "Java Class", 
    "id": "javaClass", 
    "appliesTo": [ 
     "bpmn:UserTask" 
    ], 
    "properties": [{ 
     "label": "Java Package Name", 
     "type": "String", 
     "editable": true, 
     "binding": { 
      "type": "property", 
      "name": "camunda:class" 
     } 
    }], 
    //save users _id in createdBy field 
    "createdBy": user1._id;//assuming user1 is the users document 
} 

var template = new eTemplate(templatesJavaClass); 

template.save(function(error){ 
    console.log("successfully saved template"); 
    if (error){ 
     console.log(error); 
    } 
}); 
+0

ここでは、jsonオブジェクトの一部であるクライアントからcreatedByを取得します。どのようにユーザーの_idにマップするか – hussain

+0

jsonオブジェクト –

+0

を表示する場合は、ユーザーの_idをcreatedByフィールドに配置する必要があります。 –

関連する問題