我正在学习成为一个完整的堆栈开发人员,并且已经使用Node JS作为后端构建了一个应用程序。由于我有很多使用Angular的经验,我喜欢RxJS因为它使一切更简洁和容易。所以很自然地我很想将RxJS用于某些类型的任务。在后端使用RxJS是否有任何不足之处,更具体地说,我可以从以下代码中了解到哪些不足之处?
邀请路线:
router.route('/').get((req, res) => {
if (req.headers.data) {
return services.InviteService.authenticateInvite(req.headers.data)
.subscribe(
_res => {
// Return options for front end.
// If string the invite code was not found.
// If null the associated email was not a user account.
// If user the associated email was found.
},
_error => {
// Some stuff when wrong...
}
);
} else {
// return some sort of error code.
}
});
邀请服务:
class InviteService {
constructor(models) {
this.models = models
}
findInviteById(id) {
return Observable.defer(() => {
return Observable.fromPromise(this.models.Invite.findOne({
where: { inviteId: id }
}));
});
}
findUserById(email) {
return Observable.defer(() => {
return Observable.fromPromise(this.models.User.findOne({
where: { email: email }
}));
});
}
authenticateInvite(token) {
let payload = jwt.verify(token, appConfig.SESSION_SECRET);
return this.findInviteById(payload.inviteId)
.map(_invite => _invite ? _invite : Observable.of('Invalid Invite ID'))
.mergeMap(_invite => _invite._isScalar ? _invite : this.findUserById(payload.email));
}
}
module.exports = InviteService;
正如您在Invite Service中所看到的,我已使用Observable流首先检查Invite id是否有效,然后检查是否在数据库中找到了收件人ID作为当前用户帐户。从三个返回值中的任何一个,我现在可以告诉前端它必须做什么。
我真的很喜欢RxJS,但我只是学习NodeJS而且真的不知道这是否会有问题。