无法在环回中修改AfterRemote挂钩中的响应

时间:2015-07-28 04:34:53

标签: javascript node.js loopbackjs

我有一个模型,可以在字段中上传包含一些数据的文件。我想要做的就是上传文件并将文件路径作为字符串,并对另一个模型进行创建查询,并使用在create query中作为响应发送的数据发回响应。这是我的代码。它没有修改。

var loopback = require('loopback');
var app = module.exports = loopback();
module.exports = function(Container) {

  Container.beforeRemote('upload', function(context, user, next) {

    next();
  });


  Container.afterRemote('upload', function(context, affectedInstance, next) { 


    var container = affectedInstance.result.files.file[0].container;
    var val;
    if(container=='profilepic')
    {
    var fileName  = affectedInstance.result.files.file[0].name; 
    var FirstName= affectedInstance.result.fields.FirstName[0];
    var LastName = affectedInstance.result.fields.LastName[0];
    var Email = affectedInstance.result.fields.Email[0];
    var Password = affectedInstance.result.fields.Password[0];

        var account = Container.app.models.Account;
        account.create({
        FirstName:FirstName,
        LastName:LastName,
        Email:Email,
        Password:Password,
        UserPicture:'/server/storage/'+container+'/'+fileName,
        },function(err,ant){
        if(err)
        console.log(err);
        // Modifies the context
     var res= JSON.parse(JSON.stringify(ant));
     context.result={
        data:res
     }

     console.log(context.result); // result shows the desired value 
    });


    }





    next();
  });


};

1 个答案:

答案 0 :(得分:0)

最后我得到了理想的回应。问题是在修改操作之前执行了回调next()。所以我移动了下一个创建查询的结尾。

var loopback = require('loopback');
var app = module.exports = loopback();
module.exports = function(Container) {

  Container.beforeRemote('upload', function(context, user, next) {

    next();
  });


  Container.afterRemote('upload', function(context, affectedInstance, next) { 


    var container = affectedInstance.result.files.file[0].container;
    var val;
    if(container=='profilepic')
    {
    var fileName  = affectedInstance.result.files.file[0].name; 
    var FirstName= affectedInstance.result.fields.FirstName[0];
    var LastName = affectedInstance.result.fields.LastName[0];
    var Email = affectedInstance.result.fields.Email[0];
    var Password = affectedInstance.result.fields.Password[0];

        var account = Container.app.models.Account;
        account.create({
        FirstName:FirstName,
        LastName:LastName,
        Email:Email,
        Password:Password,
        UserPicture:'/server/storage/'+container+'/'+fileName,
        },function(err,ant){
        if(err)
        console.log(err);
        // Modifies the context
     var res= JSON.parse(JSON.stringify(ant));
     context.result={
        data:res
     }

     console.log(context.result); // result shows the desired value 
     next(); // Call back;
    });


    }

});

};