如何仅在mongodb架构中从嵌入式文档中获取所有数据?

时间:2016-11-28 18:51:35

标签: node.js mongodb mongoose mongoose-schema mongoose-populate

有两种架构:用户架构和书籍架构。有n个用户,可以有任意数量的书籍。我现在必须获取数据库中存在的所有书籍。我无法解决任何解决方案。我尝试过使用populate但它不起作用。什么是这类问题的最佳方法。我不想要用户架构的任何数据,只需要每个用户的bookList。

这是userSchema.js

var mongoose = require('mongoose');
var Book = require('./book');

var userSchema={
    profile:{
        // Some more fields.
    },
    bookList:[Book.bookSchema] //Interested here
};

module.exports = new mongoose.Schema(userSchema);
module.exports.userSchema = userSchema;

这是bookSchema

var mongoose = require(' mongoose');

var bookSchema = {
    __id : mongoose.Schema.Types.ObjectId,
    info:{
        //Some fields.
    }
}

module.exports = new mongoose.Schema(bookSchema);
module.exports.bookSchema = bookSchema;

模特。

var mongoose = require('mongoose');
var _ = require('underscore');
var autoIncrement = require('mongoose-auto-increment');
module.exports = function(wagner){
//Some codes
    var Book = mongoose.model('Book', require('./book'), 'books');
    var User = mongoose.model('User', require('./user'), 'users');
    var models = {
            Book:Book,
            User:User
    }
    _.each(models, function(value, key) {
        wagner.factory(key, function() {
          return value;
        });
    });
    return models;
}

我可以在这里得到任何帮助吗?我被困了几个小时!

1 个答案:

答案 0 :(得分:0)

我尝试使用

api.get('/universe/book', wagner.invoke(function(User, Book) {// done
        return function(req, res) {
            User.find({},{profile:0, _id:0}, function(err, data){
                res.json({data:data});
            })
        };
    }));

现在有效。