Express and Mongoose with MongoDB



嘿,伙计们,我有一个这个为创建列表:

文档用户Json示例

{
    "__v" : 3,
    "_id" : ObjectId("5396e11c13e345570ae174f1"),
    "created" : ISODate("2014-06-10T10:42:36.925Z"),
    "name" : "Project",
    "projects" : [ 
        ObjectId("5396db4f3458c64f09e23ef8"), 
        ObjectId("53982440de337a4e0b3013a4")
    ]
}

模型用户

var mongoose = require('mongoose');
var Schema   = mongoose.Schema;
var User = new Schema({
    name    : String,
    projects: {
       type: Schema.Types.ObjectId,
       ref: 'Project'
    },
    created : Date
});
module.exports = mongoose.model('User', User);

模型项目

var mongoose = require('mongoose');
var Schema   = mongoose.Schema;
var Project = new Schema({
    name    : String,
    key     : String,
    description : String
});
module.exports = mongoose.model('Project', Project);

路线/Index.js

exports.index = function (req, res) {
    User.find(function (err, result) {
        res.render('index', {
            title: 'List',
            user: result
        });
    }).populate('projects');
};

Index.ejs

//foreach
<%= user.projects.name %>

但是我没有定义,为什么?我想知道项目的名称

您应该在开始执行find查询之前调用populate:

User.find().populate('projects').exec(function (err, result) {
    res.render('index', {
        title: 'List',
        user: result
    });
});

最新更新