埋め込まれたドキュメントで奇妙な動作に遭遇しました。何か間違ったことをしたのか、それともバグなのかわかりません。
これは私のモデルです:
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]" ]
}
起こっているのは、マングースが何らかの形でサブドキュメントをこの文字列に変換していると思います。res.send()
さらに、これが私のせいだとは思いません。
toJson
または明示的に使用してtoObject
いません。JSON 変換はまったく処理しません。res.send()
util.inspect
値であっても同じであるため、問題ではありません- マングース経由の書き込みと読み取りの両方で無効な変換が発生するようです
同様の動作に遭遇したことがありますか? それを回避する方法はありますか?
私はmongooseを使い始めたばかりで、mongodbネイティブにフォールバックしてドキュメントを更新およびフェッチし、この動作が持続するかどうかを確認する方法がわかりません(疑わしい)。
役立つヒントをいただければ幸いです:)