gpt4 book ai didi

json - 为什么 Mongoose 用 "[object Object]"替换子文档?

转载 作者:可可西里 更新时间:2023-11-01 09:45:52 24 4
gpt4 key购买 nike

我在使用嵌入式文档时遇到了奇怪的行为,我不知道是我做错了什么还是错误。

这是我的模型:

var mg = require('mongoose')
, S = mg.Schema;

var subject = new S({
name: String
, properties: [{
name: String
, value: String
}]
});

module.exports = mg.model('Subject',subject);

当我尝试添加属性时,它以某种方式被转换为 [object Object]":

  console.log(req.body); // --> { name: 'height', value: 120 }
console.log(typeof req.body); // --> object
ob.Subject.findByIdAndUpdate(req.params.id, {$push: {properties: req.body}}, function(err, doc) {
if(err) throw err;
res.send(doc);
});

返回的doc是:

{_id: '...', name: 'sss', properties:[ "[object Object]" ]}

我使用 mongo CLI 检查数据库中的文档并将正确的值放入其中。

//the document as seen in mongo CLI:
{
_id: '...', name: 'sss',
properties: [ "[object Object]", {name: "aaa", value: "bar"} ]
}

然后我试了一下:

ob.Subject.findById(id, function(err, doc) {
res.send(doc);
}

然后返回的文档是:

{ 
_id: '...', name: 'sss',
properties:[ "[object Object]", "[object Object]" ]
}

我认为,正在发生的事情是 mongoose 以某种方式将子文档转换为该字符串。此外,我不认为这是我或 res.send() 的错误,因为:

  • 我没有明确地使用 toJsontoObject,我根本不处理 JSON 转换
  • res.send() 不是问题,因为即使我 util.inspect 值 - 它是相同的
  • 无效的转换似乎在通过 mongoose 写入和读取时发生

你遇到过类似的行为吗?有解决办法吗?

我刚开始使用 mongoose,不知道如何回退到 mongodb native 来更新和获取文档并检查此行为是否持续存在(我怀疑)。

感谢任何有用的提示:)

最佳答案

我认为您的“properties”属性定义有误。我明白你想做什么,但我怀疑你需要将键/值对定义为它自己的一种类型,这样你的代码就变成了:

    var mg = require('mongoose')
, S = mg.Schema;

var keyValue = new S({
key: String, value: String});

var subject = new S({
name: String
, properties: [keyValue]
});

module.exports = mg.model('Subject',subject);

关于json - 为什么 Mongoose 用 "[object Object]"替换子文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15342354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com