node.js - 有没有一种简单的方法来获取嵌套子级引用?

标签 node.js mongodb mongoose

我有一个像这样的架构(简化)

var Language = new Schema({
    name: String
});
var PartOfSpeech = new Schema({
    name: String,
    language: { type: ObjectId, ref: "Language" }
});
var Attribute = new Schema({
    name: String,
    partOfSpeech: { type: ObjectId, ref: "PartOfSpeech" }
});

是否有一种简单的方法来查询 MongoDB,以便给定一种语言的 _id,它返回一个结果集,其中包含引用该语言的所有 PartOfSpeech 条目,以及所有引用每个词性的 Attribute 条目?

结果集看起来像这样:

[
   {
     name: "Noun",
     attributes: [
       { name: "Plural" },
       { name: "Possessive" }
     ]
   },
   {
     name: "Verb",
     attributes: [
       { name: "Past" },
       { name: "Future" }
     ]
   }
]

在 Mongoose 中是否有一种简单的方法可以做到这一点?

最佳答案

类似这样的事情

PartOfSpeech.find({ language: langId }, function (err, parts) {
  if (err) return done(err);

  var pending = parts.length;
  if (0 === pending) return done(null, parts);

  parts.forEach(function (part) {
    Attr.find({ partOfSpeech: part }, function (err, attributes) {
      if (err) return done(err, parts);
      part.attributes = attributes;
      if (--pending) return;
      done(null, parts)
    })
  });
})

关于node.js - 有没有一种简单的方法来获取嵌套子级引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12082496/

相关文章:

javascript - 使用回调mysql函数

javascript - 将字符串拆分为从 "] "开始、以 "As"结尾的子字符串

javascript - Firebase 云功能。无法读取未定义 (.ref) 的属性父级

javascript - 在 Node JS 中将 XML 转换为 JSON

javascript - Node.js 检测两个 Mongoose 查找何时完成

node.js - MongooseJS - 更新(不工作),findByIdAndUpdate(工作) - 为什么?

javascript - 使用 Q Promise - 有没有办法让这段代码不再重复?

python - 使用 PyMongo 从 JSON 返回随机结果

javascript - 为什么 Node 的 mongoose 告诉我 undefined 不是一个函数?

node.js - 如何使用 baucis 在 POST 请求后获取插入的 mongo id