gpt4 book ai didi

node.js - 如何正确使用函数 populate()

转载 作者:可可西里 更新时间:2023-11-01 10:52:00 25 4
gpt4 key购买 nike

我使用函数.populate() 来获取按类别 分组的equipements,所以我的模型是这样的

enter image description here

var mongoose = require('../config/db');
var EquipementSchema = mongoose.Schema({
libelle: String,
marque: String,
category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category' }
});

module.exports = mongoose.model('Equipement', EquipementSchema);

路线:

router.get('/categorie_id', function(req, res, next){
models.equipement.aggregate([
{
$group : {
_id : '$categorie_id',
equipements: { $push: '$$ROOT' }
}
}
].exec(function(err , results){

if(err) res.json({error: err});
res.json(results);
}));
});

enter image description here

当我使用 Postman 时,results 为 null

enter image description here

当我使用 cmd 时,它起作用了:

enter image description here

有人能帮忙吗?

最佳答案

您的代码中有错别字:

router.get('/categorie_id', function(req, res, next){
models.equipement.aggregate([
{
$group : {
_id : '$categorie_id',
equipements: { $push: '$$ROOT' }
}
}
].exec(function(err , results){ // <-- typo here: missing a closing bracket after the pipeline array

if(err) res.json({error: err});
res.json(results);
}));
});

应该是

router.get('/categorie_id', function(req, res, next){
models.equipement.aggregate([
{
"$group": {
"_id": "$categorie_id",
"equipements": { "$push": "$$ROOT" }
}
}
]).exec(function(err, results){
if(err) res.json({error: err});
res.json(results);
});
});

使用 Model.populate() 在更正聚合管道查询后填充文档引用的函数。使用 results 数组将 _id 路径填充为:

router.get('/categorie_id', function(req, res, next){
models.equipement.aggregate([
{
"$group": {
"_id": "$categorie_id",
"equipements": { "$push": "$$ROOT" }
}
}
]).exec(function(err, results){
if (err) res.json({error: err});
models.equipement.populate(results, { "path": "_id" }, function(err, result) {
if(err) res.json({error: err});
console.log(result);
res.json(result);
});
});
});

关于node.js - 如何正确使用函数 populate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38954992/

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