javascript - 如何在保存时自动将当前用户添加到模型中?

标签 javascript node.js loopbackjs angular-loopback

我正在为我的应用程序使用环回的内置用户模型。我想要完成的是,特定模型条目(例如一篇文章)的作者在保存时自动保存到由访问 token 标识的模型中。

我试图通过使用关系管理器来实现这一点,但内置的用户模型并未在此处列出。

在查询所有文章时,我希望用户名可用于在概览中显示它,但前提是当前用户已通过身份验证。

** 更新 **

经过相当多的研究,我至少找到了一种将当前用户添加到环回上下文的方法:

// see https://docs.strongloop.com/display/public/LB/Using+current+context
app.use(loopback.context());
app.use(loopback.token());
app.use(function setCurrentUser(req, res, next) {
  console.log(req.accessToken);
  if (!req.accessToken) {
    return next();
  }
  app.models.user.findById(req.accessToken.userId, function (err, user){
    if (err) {
      return next(err);
    }
    if (!user) {
      return next(new Error('No user with this access token was found.'));
    }
    var loopbackContext = loopback.getCurrentContext();
    if (loopbackContext) {
      loopbackContext.set('currentUser', user);
    }
    next();
  });
});

现在我尝试通过混合添加用户:

module.exports = function (Model) {
  Model.observe('before save', function event(ctx, next) {
    var user;
    var loopbackContext = loopback.getCurrentContext();
    if (loopbackContext && loopbackContext.active && loopbackContext.active.currentUser) {
      user = loopbackContext.active.currentUser;
      console.log(user);
      if (ctx.instance) {
        ctx.instance.userId = user.id;
      } else {
        ctx.data.userId = user.id;
      }
    }
    next();
  });
};

我还开了一个issue on github .

最佳答案

我知道这个问题很老,但这可能对某些人有帮助

在 LoopBack 2.x 中,您需要将其添加到您的模型 JSON

"injectOptionsFromRemoteContext": true

然后:

Model.observe('before save', function(ctx, next) {
  if(ctx.instance){
     ctx.instance.userId = ctx.options.accessToken.userId;
  }else if (ctx.data){
     ctx.data.userId = ctx.options.accessToken.userId;
  }
  return next();
});

关于javascript - 如何在保存时自动将当前用户添加到模型中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35277405/

相关文章:

node.js - Sequelize .save() 在实例上不起作用

javascript - 为什么 process.kill() 没有杀死进程?

postgresql - 我可以将 postgres JSON 列类型与 Strongloop Loopback 一起使用吗?

angularjs - Strongloop环回中API调用的最佳实践

javascript - 如何使用环回自关系实现递归连接?

javascript - 在 iOS 上长按按钮(Javascript)

javascript - 防暴: nested <inner-html> tag not working

javascript - 将函数变量值传递给javascript中的新变量

javascript - 使用 jquery 单击多个 div 时添加和删除类

javascript - 如何使用 Nodejs、Expressjs 和 bluebird 调用第二个 "external"函数