环回远程方法回调不起作用

时间:2015-04-09 17:59:10

标签: loopbackjs strongloop

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

/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没有通过回调?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

只需添加

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

并在你的功能中

cb = cb || utils.createPromiseCallback();