Loopbackjs 在环回中,如何以编程方式将数据添加到发布的内容中,如UserID和Date?

Loopbackjs 在环回中,如何以编程方式将数据添加到发布的内容中,如UserID和Date?,loopbackjs,strongloop,Loopbackjs,Strongloop,假设您创建了一个应用程序,允许注册用户通过环回API将内容发布到数据库MySQL。现在,您将如何截取发布的内容以填写某些字段,例如: -基于访问令牌的用户标识? -当前日期/时间?您可以使用 例如: Model.CustomCreate = function(data, cb){ Mode.create(data, cb); }; Model.beforeRemote('CustomCreate', function(ctx, instance, next){ ctx.args.dat

假设您创建了一个应用程序,允许注册用户通过环回API将内容发布到数据库MySQL。现在,您将如何截取发布的内容以填写某些字段,例如: -基于访问令牌的用户标识?
-当前日期/时间?

您可以使用

例如:

Model.CustomCreate = function(data, cb){
  Mode.create(data, cb);
};

Model.beforeRemote('CustomCreate', function(ctx, instance, next){
  ctx.args.data.changeDate = new Date();
  var token = ctx.req.headers.token; // or however you set that
  app.models.User.findByToken(token, function(err, account){
    if(err) return next(err);
    ctx.args.data.userId = account.id;
    next();
  });      
});

我在上面已经考虑过,在请求头中以您的方式保存令牌。

使用远程挂钩将是正确的方式。下面是一个远程钩子的示例,它将在保存记录之前添加创建日期、修改日期和用户ID。仅当创建的日期和ownerId是新记录并在更新调用时设置修改的日期时,才会设置该日期和ownerId

通用/models/model.js


嗨,易卜拉欣,谢谢你!我对环回非常陌生。按照您的指示,我应该创建一个名为“我的模型,比如说文章”的JS文件,并将其放在common/models/article.JS文件夹中?之后,我将您的代码添加到文件中,周围是module.exports,然后用我的模型名替换代码中的单词Model,对吗?另外,如何根据访问令牌获取用户ID?@FabioNolasco Hi Fabio。NP最好以自己的方式创建模型。可以通过命令lb model创建模型。请跟我来是的,没错。那么用户id呢?在那一刻,如何根据http头提供的访问令牌将其获取到那里?
'use strict';

module.exports = function(Model) {
    // Set dates and userId before saving the model
    Model.observe('before save', function setAutoData(context, next) {
        if (context.instance) {
            if(context.isNewInstance) {
                context.instance.created = Date.now();
                context.instance.ownerId = context.options.accessToken.userId;
            }
            context.instance.modified = Date.now();
        }
        next();
    });    
};