【问题标题】:Loopback Remote Method Callback not working环回远程方法回调不起作用
【发布时间】:2018-03-23 11:02:21
【问题描述】:

好的,互联网公民,我需要一些帮助...我的超级简单远程方法没有触发回调。相反,我收到此错误消息:

/maestro/common/models/datalog.js:11
                cb(null, err || 'success');
                ^
TypeError: undefined is not a function
    at /maestro/common/models/datalog.js:11:11

型号:

module.exports = function(Datalog) {

    Datalog.logdata = function(description, errordetails, errormsg, severity, cb) {
        Datalog.create(
            {
                description: description,
                errordetails: errordetails,
                errormsg: errormsg,
                severity: severity
            }, function(err, res) {
                cb(null, err || 'success');
            }
        );
    }

    Datalog.remoteMethod(
        'logdata', 
        {
            accepts: [
                {arg: 'description',  type: 'string'},
                {arg: 'errordetails', type: 'string'},
                {arg: 'errormsg',     type: 'string'},
                {arg: 'severity',     type: 'string'}
            ],
            returns: {arg: 'log', type: 'string'}
        }
    );

};

调用方法的文件:

logdata = require('./server/server.js').models.datalog.logdata;
logdata('my test success', '', 'test success', 'info');

为什么loopback没有通过回调?

【问题讨论】:

  • 乍一看我没有发现任何问题。您能否检查第 4 行的 loopback 传入的参数值,以查看最后一个 arg 是否是回调?即)console.log(arguments) 第 4 行。
  • { '0': '我的测试成功', '1': '', '2': '测试成功', '3': '信息' }
  • 看起来回调没有传递到远程方法中,但所有数据似乎都是......您还可以在您的 API 和任何请求正文上发布您正在点击的 URL 吗?
  • 问题中更新了。
  • 我想我刚刚意识到这个问题......'returns'对象只适用于API请求,所以如果我在直接调用它时想要回调,我必须在调用时提供该回调不是吗?

标签: loopbackjs strongloop


【解决方案1】:

是的,远程方法仅适用于通过 API 端点的请求。如果您直接调用它,请提供您自己的回调。

【讨论】:

    【解决方案2】:

    为了任何正在阅读本文的人的利益。您可以利用 loopback.lib.utils 为您创建一个新的回调函数。

    只需添加

    const utils = require('loopback/lib/utils');
    

    在你的函数内部

    cb = cb || utils.createPromiseCallback();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      相关资源
      最近更新 更多