我正在组建一个管理功能来创建用户。用户创建的一部分是为他们提供对某些数据库的访问权。
在代码中,我发送一个http帖子到我的web api来创建用户。成功创建后,我将添加用户数据库绑定。
private createUserDatabases(createdUser: Users) {
console.log(JSON.stringify(createdUser));
if (this.isSuperAdmin && this.newUserDatabases.length > 0) {
var newUserDbs: UserDatabase[] = [];
for (var i = 0; i < this.newUserDatabases.length; i++) {
var newUserDatabase = new UserDatabase();
newUserDatabase.database_Id = this.newUserDatabases[i].id;
newUserDatabase.user_Id = createdUser.id;
newUserDbs.push(newUserDatabase);
//console.log("Getting ready to create");
//this.usersService.addUserToDatabase(newUserDatabase);
// .subscribe(
// data => console.log(JSON.stringify(data)),
// error => {
// this.alertService.error(error._body);
// console.log("userDb" + error._body);
// }
//);
}
console.log(newUserDbs);
return this.usersService.addUserToDatabase(newUserDbs);
//this.isOpened = false;
}
}
onSubmit() {
var createdUser: Users;
this.usersService.create(this.user)
.do(u => createdUser = u)
.flatMap(u => {
return this.createUserDatabases(u);
})
.subscribe(
data => {
console.log(JSON.stringify(data));
this.loadAllUsers();
this.isOpened = false;
},
error => {
this.alertService.error(error._body);
console.log(error._body);
}
)
}
数据库绑定作为对象数组(字符串,字符串)发送。我已尝试将此作为每个所选数据库的单独调用,以及对所有选定数据库的单个调用。
这是服务
create(newUser: Users) {
return this.http.post(this.config.apiUrl + '/api/accounts/create', JSON.stringify(newUser), this.jwt())
.map((response: any) => response.json());
}
addUserToDatabase(newUserToDatabases: UserDatabase[]) {
console.log(JSON.stringify(newUserToDatabases));
return this.http.post(this.config.apiUrl + '/api/userdatabases/create', JSON.stringify(newUserToDatabases), this.jwt())
.map((response: any) => response.json());
}
所有内容都按照需要完成,并且两个请求都没有返回错误,但是,我收到一个未定义的错误而没有将其转换为data =&gt;订阅的一部分。我发现许多文章和插件似乎暗示这种设置应该有效。
答案 0 :(得分:1)
使用
.catch((error)=> {
return Observable throw(error)
};