Nodejs没有向Angular发送响应?

时间:2016-02-15 21:57:27

标签: angularjs node.js mongodb

我有一个我无法弄清楚发生了什么的事情。

  1. 在Mongo中,我做了一个document.find(),它返回一个object / s数组 - 一切都很好。
  2. 然后我尝试将两个对象发送回Angular Controller,文档对象和对象数组的长度。
  3. 代码:

    function loadConnections(req, res) {
    getConnections(req.user)
    .then(function(results){
        console.log('here');
        console.log(results);
        console.log(results.length);
    
        var returnObject = {}
        returnObject.count = results.length;
        //returnObject.results = results[0]; // PROBLEM LINE
        res.status(200).send(returnObject);
    });
    }
    

    问题我正面临着。在这种情况下,它返回一个包含1个对象的数组。该数组看起来像:

    [{id: XXX, test: YYY, test1: ZZZ}]
    

    这些都是我尝试和测试过的:

    returnObject.results = results[0].id; // works
    returnObject.results = results[0].test; // works
    returnObject.results = results[0].test1; //works
    returnObject.results = results[0]; // doesn't work
    returnObject.results = results; //doesn't work
    

    但是如果我尝试传递整个对象或整个数组,它就会遇到问题,并且不会将响应发送给控制器。

    有什么想法吗?

3 个答案:

答案 0 :(得分:0)

如果您使用快递,请尝试

res.send(200, returnObject); 

res.json(200, returnObject);

应该做的伎俩!

答案 1 :(得分:0)

就个人而言,我只计算数组到达Angular客户端后的长度,而不是在服务器上。但是,您应该能够通过这样做来完成您尝试做的事情:

var returnObject = {
    'count': results.length,
    'results': results
};
res.json(returnObject);

这里是文档:http://expressjs.com/en/api.html#res.json

同样仅针对一般故障排除,您要做的第一件事就是找出不一致的起点。在发送响应之前,数据在服务器上是否正确?当您的API处理程序收到响应时,数据在客户端上是否正确? (我假设是$ resource,或者你正在使用$ http)。因此,在从服务器发送响应之前添加这样的行,然后在客户端收到响应后添加类似的行:

console.log(JSON.stringify(returnObject, null, 2));

答案 2 :(得分:0)

原来这是我的lodash库。我一直在使用_.pluck和它的某个地方,它已经停止工作了。不得不将其更新为_.map。

相关问题