2016-03-23 24 views
2

我正在努力使用Thinky.io加入我的用戶和工作模型。Thinky.io hasMany不保存新的模型實例

在文檔中,有has many如何工作將作者附加到作者的示例here。我想爲我們的用戶設置相同的設置:每個用戶最好有一個工作領域,它保存了他們感興趣的所有工作。這就是我設置User-Job關係的方式:User.hasMany(Job, 'jobs','id','userId')。這是據我已經與我的外接工作職能得到:

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的新手,所以讓我知道我可以如何澄清我的問題。謝謝!

回答

0

有兩種方法可以存儲您描述的關係。您可以從User側或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(); 

用戶將包含一個數組,其中包含您剛剛運行的一項工作。但也許這不是你想要的。如果您希望能夠一次創建並保存與用戶關聯的作業,則可以使用saveAll進行示例的路由,但請確保您保存的數組不是,而是

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

你說你嘗試過推動這項工作。如果您仍然遇到問題,您可以分享代碼的外觀嗎?

相關問題