Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 迭代对象时节点连接问题_Javascript_Node.js - Fatal编程技术网

Javascript 迭代对象时节点连接问题

Javascript 迭代对象时节点连接问题,javascript,node.js,Javascript,Node.js,我有下面的nodejs代码。其中,commentedUser.user\u id.image循环中的变量超过了使用userImage变量多次写入的循环。我用输出详细解释了 for(var commentedUser of commentData){ var userImage = (commentedUser.user_id.image=="")?"default.png":commentedUser.user_id.image; userImage = config.baseU

我有下面的nodejs代码。其中,commentedUser.user\u id.image循环中的变量超过了使用userImage变量多次写入的循环。我用输出详细解释了

for(var commentedUser of commentData){
    var userImage = (commentedUser.user_id.image=="")?"default.png":commentedUser.user_id.image;
    userImage = config.baseUrl+("upload/user/")+userImage;
    commentedUser.user_id.image = userImage;
}
successMessage.message = "Feed comment found successfully";
successMessage.data = commentData;
return response.send(JSON.stringify(successMessage));
输出

{
    "status": "success",
    "message": "successfully",
    "data": [{
            "_id": "5c18d8403764675cccfb4de1",
            "feed_id": "5b9a19df682d9223606d3372",
            "comment": "Feed test comment",
            "user_id": {
                "_id": "5c18c20e7f936248e2b1b724",
                "role": "user",
                "image": "http://192.168.2.21:8046/upload/user/http://192.168.2.21:8046/upload/user/default.png"
            },
            "created_at": "2018-12-18T11:21:36.388Z",
            "__v": 0
        },
        {
            "_id": "5c19ccbad517491cfc1002ee",
            "feed_id": "5b9a19df682d9223606d3372",
            "comment": "Feed test comment",
            "user_id": {
                "_id": "5c18c20e7f936248e2b1b724",
                "role": "user",
                "image": "http://192.168.2.21:8046/upload/user/http://192.168.2.21:8046/upload/user/default.png"
            },
            "created_at": "2018-12-19T04:44:42.045Z",
            "__v": 0
        }
    ]
}
在输出中,您可以看到图像url重复,这就是问题所在。我不知道为什么会这样。我努力了很长一段时间都没有取得成功

注意:commentData是一个对象数组


我同意Bergi的上述评论。以不同的方式陈述:假设您从数据库(sql、mongodb等)获得这些对象;您正在查看的两条注释可能都链接到同一个用户id。因此,即使您正在循环(例如)50条不同的注释,其中一些注释可能会在同一
用户id
对象上多次运行代码

对于您来说,一个简单的解决方案就是确保您不会规范化已经规范化的URL,如下所示:

for(var commentedUser of commentData) {
    var userImage = (commentedUser.user_id.image=="")?"default.png":commentedUser.user_id.image;
    if (!userImage.startsWith("http")) {
        userImage = config.baseUrl+("upload/user/")+userImage;
    }
    commentedUser.user_id.image = userImage;
}

更一般地说,您遇到这一事实可能表明您在错误的位置执行此操作-这可能发生在应用程序链的更上层,可能发生在用户模型中。

您的代码将“基本URL”和路径片段
/upload/User
添加到图像URL的前面,但是看起来源URL已经包含了基本部分。
commentedUser.user\u id.image
的原始值是什么?还有什么是
config.baseUrl
?@Pointy还没有包括在内。您可以看到,首先我使用图像名称,然后我将其与baseUrl连接。@Bergi
commentedUser.user\u id.image=blank(空字符串)
config.baseUrl=common url
的原始值images@Sadikhasan如果您
console.log(userImage)
在循环体的末尾,它的值与最终的
JSON.stringify
中的值不同,并且您在第一个日志中得到了预期值,在第二个日志中得到了错误值,这非常有力地支持了我的假设,
。user
属性引用了完全相同的对象。太棒了!!!非常感谢你。我从同一个用户那里得到了两个对象,这就是它产生问题的原因。