2016-03-23 11 views
2

Thinky.ioを使用してユーザーとジョブモデルに参加するのに苦労しています。Thinky.io hasManyは新しいモデルインスタンスを保存していません

文書には、hasManyが投稿者を投稿者に添付する方法の例がhereあります。私はユーザーのために同じ設定をしたいと思います:それぞれのユーザーは理想的には関心のあるすべての仕事を保存した仕事フィールドを持っているでしょう。これは私がUser-Jobの関係を設定した方法です:User.hasMany(Job、 'jobs'、 'id'、 'userId')。これは、私の知る限り、私の追加ジョブ機能を得ているようである:これはちょうど、ユーザーがクリックしたものは何でも、現在のジョブにuser.jobsを設定している

module.exports.addJob = function*(next) { 
    this.type = 'application/json'; 
    var user = yield User.get("473ade1a-d2df-4618-9a53-ed68fa98f169").run(); 
    const joins = yield User.get(user.id).getJoin().run(); 

    const jobData = yield parse(this); 
    const job = new Job(jobData); 
    user.jobs = job; 
    var userJoined = yield user.saveAll({jobs: true}); 

。私は新しい仕事をuser.jobsにプッシュしようとしましたが、それもうまくいかなかったのです。私はコンソールに情報を見ることができますが、この関係は私が知る限りデータベースに保存されません。これまで誰もこの問題を扱っていましたか?私はStackOverflowの新機能ですので、どうすればわたしの質問を明確にすることができますか?ありがとうございました!

答えて

0

説明する関係を保存するには2通りの方法があります。 User側またはJob側から問題を攻撃することができます。私にとって、Jobはより直感的だと思われますが、私は両方を歩きます。覚えておくべき鍵は、関係が仮想的であることです。 Userにはデータベースに格納されているジョブの配列はありません。実行時に生成されたものです。

だから、ただやる、仕事を保存するには:

const job = new Job(jobData); 
job.userId = user.id; // set the user id on the relationship 
var savedJob = yield job.save(); 

は、だから今の仕事は、データベースに保存され、ユーザーに関連付けられています。実行する場合:

var user = yield User.get("473ade1a-d2df-4618-9a53-ed68fa98f169").getJoin().run(); 

ユーザーには、実行したばかりのジョブが1つ含まれています。しかし、それはあなたが望むものではないかもしれません。一度にユーザーに関連付けられたジョブを作成して保存したい場合は、saveAllを使用してこの例のルートに進むことができますが、がジョブだけでなくアレイを保存していることを確認してください。

const job = new Job(jobData); 
user.jobs = [job]; 
var userJoined = yield user.saveAll({jobs: true}); 

あなたはジョブをプッシュしようとしました。それでも問題が解決しない場合は、そのコードの外観を共有できますか?

関連する問題