javascript - 将数据从服务传递到 Controller

标签 javascript sails.js

我创建了一个旨在访问 API 的服务。我需要将数据返回到我的 Controller ,但由于我对 sails 完全陌生,所以不确定如何执行此操作。

我的服务:

// API call to get the ID of contact within Get Response with email address
getContact: function(options) {

    // establish connection to API
    var api = new getResponse(apiKey, apiUrl);

    var contact = api.getContactsByEmail(options.email, null, null, function (response) {
        JSON.stringify(response);
        console.log(JSON.stringify(response));
    });

    return contact;

},

我知道 API 调用正在工作,因为当我记录响应时,我得到了正确的响应:

{"success":true,"data":{"error":null,"id":1,"result":{"sds":{"ip":null,"name":"全名","origin":"api","cycle_day":0,"email":"email@email.com","campaign":"id","created_on":"date","changed_on":null} }}}

我的 Controller :

index: function(req, res) {

    var contact = GetresponseService.getContact({email: 'email@email.com'});

    console.log(contact);
    return res.send(contact);

}

我想检索 ID 值,但是当我记录联系人的值时,我得到了未定义的信息。我认为我的问题与范围有关,但不确定。

有人能指出我正确的方向吗?

最佳答案

因为您直接从 api.getContactsByEmail() 赋值它不返回值。

根据 Node.js 的本质,函数 api.getContactsByEmail()为您提供回调 response 。您必须从匿名回调函数中获取值,如下所示:

// API call to get the ID of contact within Get Response with email address
getContact: function(options) {

    // establish connection to API
    var api = new getResponse(apiKey, apiUrl);
    var contact =  "";
    api.getContactsByEmail(options.email, null, null, function (response) {

        contact = response;

        JSON.stringify(response);
        console.log(JSON.stringify(response));

        return contact; 
    });

}

更多...

我认为,返回回调比直接返回值更好。

// API call to get the ID of contact within Get Response with email address
getContact: function(options, callback) {

    // establish connection to API
    var api = new getResponse(apiKey, apiUrl);
    var contact =  "";    
    api.getContactsByEmail(options.email, null, null, function (response) {

        contact = response;

        JSON.stringify(response);
        console.log(JSON.stringify(response));

        if(typeof(callback) == "function")
            callback(contact);
        else
            return contact; // return contact if there is callback func.
    });

}

您可以像这样使用它:

index: function(req, res) {

    var contact;
    GetresponseService.getContact({email: 'email@email.com'}, function(contactResult) {

        contact = contactResult;
        console.log(contact);
        return res.send(contact);
    });


}

关于javascript - 将数据从服务传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34883624/

相关文章:

mysql - 如何使用 sails 在 mysql 中存储对象类型字段

javascript - 将多维数组传递给javascript中的函数

javascript - 如何给回调函数添加参数?

javascript - 缩放打破可滚动数据表

node.js - Waterline-OrientDB - 双向边缘

mongodb - sails.js 数据迁移后未提升

mongodb - 如何使用 aggregate 按半小时分组并四舍五入?

javascript - SailsJS,SocketIO,没有收到消息

javascript - 选择浏览器自动完成功能提交表单(不是自定义自动完成功能)

Javascript HTML 值到数组