我举了一个简单的书籍例子,标有他们的类型:
var db = require('mongojs').connect('mongo-test', ['tags', 'books']);
db.tags.drop();
db.books.drop();
db.tags.insert([{
_id: 1,
name: 'Thriller'
}, {
_id: 2,
name: 'Romance'
}, {
_id: 3,
name: 'Crime'
}, {
_id: 4,
name: 'Comedy'
}]);
db.books.insert([{
title: 'Book 1',
tags: [1, 3]
}, {
title: 'Book 2',
tags: [2]
}, {
title: 'Book 3',
tags: [2, 4]
}]);
db.books.find({}, function (error, result)
{
// how do I resolve the tag-references?
console.log(result);
});
现在,当我检索书籍时,我还希望拥有完整的标签,而不仅仅是他们的ID。我不想将标签直接放在书籍记录中,因为标签对象会在属性中增长。
解决这类推荐的最佳做法是什么?
答案 0 :(得分:0)
在node.js世界中,通常的做法是使用Mongoose ORM及其对population的支持。
您的查询最终会如下所示:
Book.find({}).populate('tags').exec(function(err, books) {...});