You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过Socket.io传递MongoDB ObjectID至服务器,请求修复

问题修复方案

你遇到的问题由三个关键错误导致,以下是逐一修复步骤:

1. 客户端未获取input的实际值

你当前获取的是jQuery DOM对象而非input的value属性,需要添加.val()来提取ObjectID字符串:

// 原代码
var ObjectID = $('#ObjectID')

// 修复后
var ObjectID = $('#ObjectID').val();

2. Socket事件名称不匹配

客户端发送的事件名为ObjectID,但服务器监听的是ObjectIO,需统一事件名称:

// 服务器端原代码
socket.on('ObjectIO',(ObjectID)=>{...})

// 修复后
socket.on('ObjectID',(ObjectID)=>{...})

3. 未等待Socket连接完成就发送数据

当前代码在文档就绪时立即发送数据,此时Socket可能尚未建立连接,需将发送逻辑放在connect事件回调内:

完整修复后的客户端代码

$(document).ready(function(){
    var socket = io();

    // connect client to server
    socket.on('connect', function(){
        console.log('Connected to server');
        // 连接建立后再发送ID
        var ObjectID = $('#ObjectID').val();
        socket.emit('ObjectID', ObjectID);
    });

    // disconnect from server
    socket.on('disconnect', function(){
        console.log('Disconnected from server');
    });
});

完整修复后的服务器端代码

// socket connection
const server = http.createServer(app);
const io = socketIO(server);
io.on('connection',(socket)=>{
    console.log('Connected to client');
    // 修正事件名称为ObjectID
    socket.on('ObjectID',(ObjectID)=>{
        console.log('User ID is: ', ObjectID);
    });

    // listen to disconnection
    socket.on('disconnect',()=>{
        console.log('Disconnected from Client');
    });
});

完成以上修复后,重新启动服务器并登录,VS Code的Node.js控制台就能正常打印用户ObjectID了。

内容的提问来源于stack exchange,提问作者nik_kolev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 00:05:02