有关Node JS

时间:2018-02-14 16:39:29

标签: javascript node.js rxjs

我正在学习成为一个完整的堆栈开发人员,并且已经使用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而且真的不知道这是否会有问题。

0 个答案:

没有答案