在node.js和socket.io中发送数组时的错误

2024-01-03

我使用socket.io版本0.8.4

我将我的问题归结为以下几点。我的数据看起来像这样:

data.prop1 = [];
data.prop1.push("man");
data.prop2 = [];
data.prop2["hey"] = "man";

我通过以下方式将数据从服务器发送到客户端:

socket.emit("data", data);

在客户端我以这种方式接收数据:

socket.on("data", function(data){ console.log(data); });

奇怪的是:

data.prop1 = [];
data.prop1.push("man"); // This data exists in the client side data object
data.prop2 = [];
data.prop2["hey"] = "man"; // This data does not exist.

data.prop2 只是客户端的一个空数组。

prop2 中表单上的 json 序列化数组是否存在已知错误?

先感谢您

EDIT:

使用此解决方法解决了问题:

data.prop1 = [];
data.prop1.push("man");
data.prop2 = {}; // <= Object instead of array
data.prop2["hey"] = "man";

ECMA-262 关于JSON.stringify:

数组的表示仅包括零和之间的元素array.length – 1包括的。命名属性被排除在字符串化之外。

数组应该有数字属性名称。所以当data.prop2转换为 JSON(我想是 socket.io 发送数据的),它没有得到'hey'财产。如果你想使用非数字属性名称,你应该使用对象而不是数组:

data.prop1 = [];
data.prop1.push("man");
data.prop2 = {}; // Notice we're creating an object, not an array.
data.prop2["hey"] = "man"; // Alternatively: data.prop2.hey = "man"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在node.js和socket.io中发送数组时的错误 的相关文章

  • 将数组传递给函数 - 指针与引用(C++ 与 C)

    我有一个关于将数组传递给函数的最佳实践的广泛问题 因此 过去当我用 C 语言编程时 我想要一个函数的输入是一个数组 我会声明该函数的输入参数是一个指针 这效果相对较好 然而 我已经开始更多地使用 C 进行编程 并试图确定将数组传递到函数中的
  • 通过在 body、mongoose/mongodb 中提供文档来更新多个文档

    我需要通过在正文中提供一些文档来更新它们 我无法查询它们 必须提供它们 Example var persons id 1 name Joe active false id 2 name Jane active false 该数据在正文中提供
  • Swift:配对数组元素的最佳方法是什么

    我遇到了一个需要成对迭代数组的问题 最好的方法是什么 或者 作为替代方案 将数组转换为对数组 然后可以正常迭代 的最佳方法是什么 这是我得到的最好的 这个需要output成为一个var 而且它并不是很漂亮 有没有更好的办法 let inpu
  • 通过套接字的身份验证方法

    我正在尝试通过套接字进行身份验证sailsjs and passport 挑战似乎在于套接字连接没有会话 并且 sailsjs 模拟请求对象 导致它没有 Passport 中间件设置 这导致nodejs抛出一个错误 说req对象没有调用的方
  • 如何在 Express (NodeJS) 中验证和处理表单

    Express 是否有首选的表单处理和验证库 我真的在寻找与 Django 表单中类似的抽象级别 即模板中的验证和错误报告 如果可以在客户端使用相同的验证 那就太好了 有人用过或者写过什么好东西吗 看起来有一个模块位于https githu
  • 让 Express 服务器接受 CORS 请求

    我的 Express 服务器运行在 http localhost 3000 我称之为网络服务器 我有另一个应用程序在 localhost 8100 上运行 我简称为 应用程序 当我的应用程序调用网络服务器时 我收到以下消息 XMLHTTPR
  • 数组所有可能的组合

    我有一个字符串数组 ted williams golden voice radio 我希望这些关键字的所有可能组合采用以下形式 ted williams golden voice radio ted williams ted golden
  • 如何安装 grunt-cli 而不出现错误?

    灵感来自 Chris Coyierpost http 24ways org 2013 grunt is not weird and hard 我决定尝试一下 grunt 但我在设置时遇到了很大的问题 首先 我安装了 Node js 然后我将
  • 扩展 Protobuf 消息

    我有许多不同的模式 但是每个模式都包含一组字段 我想知道是否有一种方法可以让不同的模式扩展父模式并继承其字段 例如 这就是我想要的 message Parent required string common1 0 optional stri
  • Electron webContentsexecuteJavaScript:无法在 loadURL 上第二个执行脚本

    我正在测试 Electron 特别是使用executeJavaScript 我的项目使用 POST 请求登录网站 然后执行一些工作并使用同一会话加载第二个 URL 在第二个 URL 中 我需要执行 JS 但我不确定我做错了什么 在此示例中
  • Angular 5 - ag-grid 18.0.1 - 边缘崩溃

    我一直在到处搜索 但无法找到与此相关的任何信息 很可能是因为 ag grid update 18 x 是新的 无论如何 似乎在将 ag grid 从 17 1 1 更新到 18 0 1 后 任何带有 ag grid 的页面最终都会导致 ED
  • Azure Functions 中通过整数 SQL 查询 DocumentDB 不起作用

    我在 Azure Functions 中使用 JavaScript 语言 当使用 Cosmos DB 作为输入时 我无法通过整数作为变量进行查询 例如 我有以下内容 使用 Azure Cosmos DB 作为我的输入 公司 的功能设置 这是
  • 数组与列表的性能

    假设您需要一个需要频繁迭代的整数列表 数组 我的意思是非常频繁 原因可能有所不同 但可以说它位于大容量处理的最内层循环的核心 一般来说 人们会选择使用列表 List 因为它们的大小具有灵活性 最重要的是 msdn 文档声称列表在内部使用数组
  • QByteArray 到整数

    正如您可能从标题中看出的那样 我在转换QByteArray为一个整数 QByteArray buffer server gt read 8192 QByteArray q size buffer mid 0 2 int size q siz
  • 如何在 Google App Engine 上部署 1 个实例

    我需要在 Google App Engine 上部署一个简单 Node js 应用程序的 1 个实例 无需任何形式的扩展 我试过做gcloud preview app deploy 但是即使在我尝试关闭它们之后 也会创建许多实例 我的目标是
  • 如何通过aws-sdk(javascript或node)获取s3存储桶大小

    我尝试使用 javascript nodejs aws sdk 查找 获取 s3 存储桶信息 但没有找到这样的 api 如何通过 aws sdk javascript 或 node api 获取 s3 存储桶大小 信息 每天一次向 Clou
  • Nodemailer:从未收到问候语

    当尝试使用 Nodemailer 在 Node 内发送电子邮件时 https github com nodemailer nodemailer https github com nodemailer nodemailer 调用sendMai
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • Node / Express Handlebars - 在哪里定义自定义助手

    我正在开发一个节点 快速 车把应用程序 我刚刚发现了自定义助手 但我不知道在哪里定义它们 我尝试在实际视图模板 hbs 文件中添加一些
  • NodeJS:如何获取服务器的端口?

    您经常会看到 Node 的示例 hello world 代码 它创建一个 Http Server 开始侦听端口 然后执行以下操作 console log Server is listening on port 8000 但理想情况下你会想要

随机推荐