Ember hasMany 关系在创建时保存
Ember hasMany relationship save on create
我正在尝试创建一个 ember 具有来自 POJO 的 hasMany 关系的数据记录,这非常困难。这是使用 ember-concurrency(因此任务和 yield 语法。
saveEntry: task(function* (obj){
let entry = yield this.model.get('entries').createRecord({
groupId: obj.objectID,
name: obj.name,
...
}).save();
obj.owner_ids.forEach((user_id) => {
this.store.findRecord('user', user_id).then((user) => {
entry.get('owners').pushObject(user);
entry.save();
});
})
}).drop();
所以难点是 'obj.owner_ids',它是 user_ids 的数组。我将每个添加到数组中,但随后需要在每个 pushObject 之后保存,否则它不起作用。即使它确实有效,它也会抛出一堆网络错误(可能是由于保存时的竞争条件)。那里一定有更好的办法,不过我没找到。
我不确定 this.model
在您的代码中代表什么,但您可以尝试获取您需要的所有用户,然后在创建和保存时附加它们,例如:
import { all } from 'rsvp';
saveEntry: task(function* (obj){
let users = obj.owner_ids.map(userId => this.store.findRecord('user', user_id));
let promises = this.model.get('entries').createRecord({
groupId: obj.objectID,
name: obj.name,
owners: users,
...
}).save()
// all() waits for an an array of promises to return
yield all(promises);
}).drop();
我正在尝试创建一个 ember 具有来自 POJO 的 hasMany 关系的数据记录,这非常困难。这是使用 ember-concurrency(因此任务和 yield 语法。
saveEntry: task(function* (obj){
let entry = yield this.model.get('entries').createRecord({
groupId: obj.objectID,
name: obj.name,
...
}).save();
obj.owner_ids.forEach((user_id) => {
this.store.findRecord('user', user_id).then((user) => {
entry.get('owners').pushObject(user);
entry.save();
});
})
}).drop();
所以难点是 'obj.owner_ids',它是 user_ids 的数组。我将每个添加到数组中,但随后需要在每个 pushObject 之后保存,否则它不起作用。即使它确实有效,它也会抛出一堆网络错误(可能是由于保存时的竞争条件)。那里一定有更好的办法,不过我没找到。
我不确定 this.model
在您的代码中代表什么,但您可以尝试获取您需要的所有用户,然后在创建和保存时附加它们,例如:
import { all } from 'rsvp';
saveEntry: task(function* (obj){
let users = obj.owner_ids.map(userId => this.store.findRecord('user', user_id));
let promises = this.model.get('entries').createRecord({
groupId: obj.objectID,
name: obj.name,
owners: users,
...
}).save()
// all() waits for an an array of promises to return
yield all(promises);
}).drop();