查询 Mongodb 子文档错误将循环结构转换为 JSON
Querying Mongodb Subdocuments error Converting circular structure to JSON
我有一个包含一系列子文档的文档:
{
"company": "test plc",
"address": [
{
"addr1": "37",
"addr2": "",
"addr3": "test",
"addr4": "",
"addrcity": "",
"addrcounty": "test",
"addrpostcode": "test"
},
{
"addr1": "37",
"addr2": "",
"addr3": "test",
"addr4": "",
"addrcity": "",
"addrcounty": "test",
"addrpostcode": "test"
},
{
"addr1": "37",
"addr2": "",
"addr3": "test",
"addr4": "",
"addrcity": "",
"addrcounty": "test",
"addrpostcode": "test"
}
],
"contacts": [
{
"name": "test",
"surname": "testing",
"title": "master"
},
{
"name": "test",
"surname": "testing",
"title": "master"
}
]
}
我想做的是 return 通过搜索 contacts.surname
属性.
的文档列表
var leads = Lead.find({"contact.surname":req.params.name});
这会导致错误 "Converting circular structure to JSON" 但我不确定原因。
编辑时添加:
这是我的集合架构:
var leadsSchema = new Schema({
company: String,
address:
[
{
addr1: String,
addr2: String,
addr3: String,
addr4: String,
addrcity: String,
addrcounty: String,
addrpostcode: String
}
],
contacts:
[
{
name: String,
surname: String,
title: String
}
]
});
var Lead = mongoose.model('leads', leadsSchema);
这是我的两个路由器:
这return全部来自合集发现:
router.get('/', function(req, res) {
Lead.find({}).exec(function(err, leads) {
res.send(leads);
});
});
这会导致循环错误:
router.get('/findByContactName/:surname', function(req, res) {
var leads = Lead.find({"contacts.surname":req.params.name});
res.send(leads);
});
试试这个
router.get('/findByContactName/:surname', function(req, res){
Lead.find({"contacts.surname":req.params.name}).exec(function(err, leads){
res.send(leads);
});
或者试试这个
router.get('/findByContactName/:surname', async (req, res)=> {
const leads = await Lead.find({"contacts.surname": req.params.surname });
res.send(leads);
});
长话短说:
改变var leads = Lead.find({"contacts.surname":req.params.name});
收件人:
var leads = await Lead.find({"contacts.surname":req.params.name});
说明
model.find() 只是 returns 一个查询。它不会为您执行查询。因此,'leads' 变量当前是一个 Mongoose 查询文档。
当您执行 res.send(leads) 时,express 在内部执行此操作:
JSON.stringify(leads)
stringify() 无法将循环结构转换为 JSON。因此,错误。
如果这里有人能阐明为什么 Mongoose 查询文档是循环结构,那就太好了!
我有一个包含一系列子文档的文档:
{
"company": "test plc",
"address": [
{
"addr1": "37",
"addr2": "",
"addr3": "test",
"addr4": "",
"addrcity": "",
"addrcounty": "test",
"addrpostcode": "test"
},
{
"addr1": "37",
"addr2": "",
"addr3": "test",
"addr4": "",
"addrcity": "",
"addrcounty": "test",
"addrpostcode": "test"
},
{
"addr1": "37",
"addr2": "",
"addr3": "test",
"addr4": "",
"addrcity": "",
"addrcounty": "test",
"addrpostcode": "test"
}
],
"contacts": [
{
"name": "test",
"surname": "testing",
"title": "master"
},
{
"name": "test",
"surname": "testing",
"title": "master"
}
]
}
我想做的是 return 通过搜索 contacts.surname
属性.
var leads = Lead.find({"contact.surname":req.params.name});
这会导致错误 "Converting circular structure to JSON" 但我不确定原因。
编辑时添加:
这是我的集合架构:
var leadsSchema = new Schema({
company: String,
address:
[
{
addr1: String,
addr2: String,
addr3: String,
addr4: String,
addrcity: String,
addrcounty: String,
addrpostcode: String
}
],
contacts:
[
{
name: String,
surname: String,
title: String
}
]
});
var Lead = mongoose.model('leads', leadsSchema);
这是我的两个路由器:
这return全部来自合集发现:
router.get('/', function(req, res) {
Lead.find({}).exec(function(err, leads) {
res.send(leads);
});
});
这会导致循环错误:
router.get('/findByContactName/:surname', function(req, res) {
var leads = Lead.find({"contacts.surname":req.params.name});
res.send(leads);
});
试试这个
router.get('/findByContactName/:surname', function(req, res){
Lead.find({"contacts.surname":req.params.name}).exec(function(err, leads){
res.send(leads);
});
或者试试这个
router.get('/findByContactName/:surname', async (req, res)=> {
const leads = await Lead.find({"contacts.surname": req.params.surname });
res.send(leads);
});
长话短说:
改变var leads = Lead.find({"contacts.surname":req.params.name});
收件人:
var leads = await Lead.find({"contacts.surname":req.params.name});
说明
model.find() 只是 returns 一个查询。它不会为您执行查询。因此,'leads' 变量当前是一个 Mongoose 查询文档。
当您执行 res.send(leads) 时,express 在内部执行此操作:
JSON.stringify(leads)
stringify() 无法将循环结构转换为 JSON。因此,错误。
如果这里有人能阐明为什么 Mongoose 查询文档是循环结构,那就太好了!