问题描述
问题
Mongo 中的空对象在 PHP 中被解码为空数组。这导致了一个问题,在我执行 json_encode($data)
之后,json 中应该是 {}
的值被编码为 []
。
配置
图像你有一个像这样映射到 Mongo 的文档:
/**
* @MongoDB\EmbeddedDocument()
*/
class RandomForm
{
/**
* @var mixed
* @MongoDB\Field(type="raw")
*/
private $content;
}
为什么?前端绘制“随机”表单(它知道其他来源的表单应该是什么样子)并希望保存数据。为此,前端只需将 JSON 发送到后端。当前端要求数据时,它希望将其取回。无论出于何种原因,我们都希望通过数据库中的随机字段进行搜索。
除非前端向我们发送空对象,否则它工作得很好,该对象作为空 Object
存储到 Mongo,但 PHP 发挥了作用并将其转换为空 Array
。
有什么办法可以让 Mongo 保持原始数据类型(对象或数组)?
限制
您不能将所有空数组都转换为对象 (\stdClass()
),因为有时它仍然应该是空数组。
Mongo 人说他们不会在驱动程序中修复它:https://jira.mongodb.org/browse/PHP-550
有什么办法可以绕过这种行为吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)