【发布时间】:2018-07-05 13:31:42
【问题描述】:
我需要在我的主数据库中插入用户信息,一旦插入(成功)我必须在多个中插入类似的
数据库(API)。我将Observable.forkJoin() 用于我的主数据库,因为多个表中有多个插入。
以下是我的代码:
save(){
Observable.forkJoin([
this.userService.saveUser(this.username),
this.userService.saveRoles(this.username, this.roles),
this.userService.saveGroups(this.username, this.groups)
]).subscribe(data=>{
if(data.length == 3){
this.saveInMultipleDatabases();
}
},
err => console.error("error while adding user ",err)
);
}
saveInMultipleDatabases(){
for(let i=0;i<this.allDatabases;i++){
Observable.forkJoin([
this.userService.saveUser(this.username),
this.userService.saveRoles(this.username, this.roles),
this.userService.saveGroups(this.username, this.groups)
]).subscribe(data=>{
console.log(data);
},
err => console.error("error while adding user ",err)
);
}
}
现在我这里有几个问题
-
observable.forkJoin()是在多个表中插入数据的更好方法吗? - 在插入主数据库后,在其
subscribe()函数中使用observation.forkJoin并对其进行迭代是更好的方法吗? 像我在这里做的那样实现在多个数据库中的插入。 - 迭代可观察对象或承诺处理所有数据库的请求/响应是更好的方法吗?
- 我也必须为用户更新/删除场景实施类似的方法,所以我想知道是否是更好的实施方法。
任何帮助将不胜感激。
更新
在 Angular 服务中为我的主数据库插入代码:
saveUser(username){
return window.appnamespace.DBAPI.insertUser(username);
}
saveRoles(username, roles){
let promise;
roles.forEach(role => {
promise = window.appnamespace.DBAPI.insertRoles(role, username);
});
return promise;
}
saveGroups(username, groups){
let promise;
groups.forEach(grp => {
promise = window.appnamespace.DBAPI.insertGroups(grp.value, username);
});
return promise;
}
【问题讨论】:
-
您是否尝试从前端应用程序中保持多个数据库同步...?!
-
抛开这是否是正确的服务器端更新顺序,但肯定有更好的方法可以让您的代码更简单,但我无法在您的代码中看到数据库是如何迭代的
-
@maxime1992: 不应该是异步的
-
@FanCheung:实际上我还没有为此编写代码,但我正在尝试为多个数据库实现这样的功能,但是我已经为我的主数据库编写了代码,我可以向您展示
-
@SKy 这不是我的意思。为什么要重现对多个数据库的所有调用?感觉真的,真的很奇怪。
标签: javascript angular promise rxjs observable