2017-04-12 14 views
0

既存のデータベースにオブジェクト参照を追加したい。 現在、私は両方のデータベース(ドメイン& LabConfigs)を持っています& &を実行している彼らは両方が私がrobomongoから見ることができるインスタンスを持っています。既存のデータベースのキーストーンと多対多の関係を作成

LabConfigsは、私は、スキーマを次のように、私のキーストーンを起動したときに今、この

  id_:8787897 (objectId) 
     domainName:ggogle.com 
     id_:34234234 (objectId) 
     domainName:fb.com 

のように見えるこの

  id_:12345 (objectId) 
     labConfig: test1 
     id_:67890 (objectId) 
     labConfig: test2 

ドメイン名のように見えます。

****************LabConfigs*********************** 
var LabConfigs = new keystone.List('LabConfigs'); 

LabConfigs.add({ 
configName: {type: Types.Text, required: true, initial: true, index: true} 
}); 
LabConfig.defaultColumns = 'configName'; 
LabConfig.register(); 

************************************************ 

これは私の2番目のデータベースです。

var Domain = new keystone.List('Domain'); 

Domain.add({ 
    domainName: {type: Types.Text, required: true, initial: true, index: true}, 
    labConfigs :{type: Types.Relationship, ref: 'LabConfigs',required: false,many: true}, 
    userauthlevel:{ type: Types.TextArray} 
    }); 


Domain.defaultColumns = 'domainName'; 
Domain.register(); 

ここで、ドメインデータベースにlabConfigsを配列として追加します。すなわち、各labConfigsはドメイン配列との関係を有する。すなわち、多くの関係に多くの本を構築するために開始するキーストーンに追加する

キーストーンで

  1. (init)関数でこの関係を構築するクエリはどれですか?

回答1 - >私はあなたがあなたのDomainモデルにlabconfigsフィールドを持っている、とあなたが設定した

view.on('init', function())} 

答えて

1

でそれを持つことは良い考えであることをあまりにも多くの&姿を探し出しmany: trueその上に。ここでDomain文書にLabConfig IDの配列を指定できます。 Domainを保存すると、labConfigslabConfigの文書IDの配列に等しく設定できます。また、IDの代わりにlabConfig自身の配列を作成することもできます。キーストーンはオブジェクトへの参照を同じ方法で保存します。

view.on('post', function (next) { 
    var labConfigIDs = []; // Array of labConfig IDs, created however you want 
    domain.getUpdateHandler(req).process({ 
     labConfigs: labConfigIDs 
    }, { 
     flashErrors: true, 
     errorMessage: 'There was a problem updating your domain.' 
    }, function(err) { 
     if (err) { 
      req.flash("error", saveErr.message); 
      return next(); 
     } else { 
      req.flash('success', 'Your changes have been saved.'); 
      return next(); 
     } 
    }); 
}); 
+0

私はview.on(post)ではなく、台形補正を開始するときに最初は同じことをすることができます。私は同じことをview.on( 'init)でもやりますか?私たちが新しい+新しいドメイン値whilleを挿入し始めているのであれば、あなたは返信します。私の両方のコレクションが終了するとき。 –

+0

あなたが何を求めているのかよく分かりません。モデルとその情報はデータベースに残っているので、キーストーンを開始するときには何もする必要はありません( 'keystone.on( 'start')')。一度データをあらかじめ入力しなおしたい場合は、 )、その[組み込み更新機能](http://keystonejs.com/docs/configuration/#updates)を使用します。 –

+0

userauthlevelはテキスト配列の配列です。userauthlevelにitemを挿入する方法userauthlevelは文字列の配列ですLabConfig配列内の対応する各値に対して値「true/false」を返します。 –