1

Thinky.io を使用してユーザー モデルとジョブ モデルに参加するのに苦労しています。

ドキュメントには、 hasManyが投稿を作成者に添付する方法の例がここにあります。私たちのユーザーにも同じように設定したいと思います: 各ユーザーには、興味のあるすべてのジョブを保存するジョブ フィールドが理想的です。これが、ユーザーとジョブの関係をセットアップした方法です: 「ジョブ」、「id」、「userId」)。これは、 add Job 関数で得た限りです。

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 を設定するだけです。新しいジョブを user.jobs にプッシュしようとしましたが、それもうまくいきませんでした。コンソールで情報を確認できますが、私が知る限り、この関係はデータベースに保存されません。以前にこの問題に対処した人はいますか? 私は StackOverflow を初めて使用するので、質問を明確にする方法を教えてください。ありがとうございました!

4

1 に答える 1

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();

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

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

あなたは仕事を押し付けようとしたと言った。それでも問題が解決しない場合は、そのコードがどのように見えるかを共有できますか?

于 2016-05-22T19:36:08.633 に答える