求解mongoose中的populate方法报错
直接贴代码:
schemas/line.js
:
var mongoose = require('mongoose')
var Schema = mongoose.Schema;
var ObjectId = Schema.Types.ObjectId;
var LineSchema = new mongoose.Schema({
creator: {type:ObjectId,ref:'User'},
title:String,
desc:String
})
controllers/line.js
:
var mongoose = require('mongoose');
var Line = require('../models/line');
var User = require('../models/user');
exports.detail = function (req, res) {
var id = req.params.id;
Line.findById(id, function (err, line) {
User
.findById(req.session.user._id)
.populate('creator','name')
.exec(function(err,users){
console.log('users:');
console.log(users);
res.render('lineDetail', {
title: line.title,
line: line,
users: users
})
})
})
};
模板jade文件是:
dt 业务名称
dd #{line.title}
dt 创建时间
dd #{line.meta.createAt}
dt 创建人
dd #{line.creator.name}
dt 业务介绍
dd #{line.desc}
报错信息:
/Users/cassie/github-demo/mean/app/controllers/line.js:15
.populate('creator','name')
^
TypeError: Object #<Promise> has no method 'populate'
at Promise.<anonymous> (/Users/cassie/github-demo/mean/app/controllers/line.js:15:14)
at Promise.<anonymous> (/Users/cassie/github-demo/mean/node_modules/mongoose/node_modules/mpromise/lib/promise.js:177:8)
at Promise.emit (events.js:95:17)
at Promise.emit (/Users/cassie/github-demo/mean/node_modules/mongoose/node_modules/mpromise/lib/promise.js:84:38)
at Promise.fulfill (/Users/cassie/github-demo/mean/node_modules/mongoose/node_modules/mpromise/lib/promise.js:97:20)
at Promise.resolve (/Users/cassie/github-demo/mean/node_modules/mongoose/lib/promise.js:114:23)
at Promise.<anonymous> (/Users/cassie/github-demo/mean/node_modules/mongoose/node_modules/mpromise/lib/promise.js:177:8)
at Promise.emit (events.js:95:17)
at Promise.emit (/Users/cassie/github-demo/mean/node_modules/mongoose/node_modules/mpromise/lib/promise.js:84:38)
at Promise.fulfill (/Users/cassie/github-demo/mean/node_modules/mongoose/node_modules/mpromise/lib/promise.js:97:20)
不知道哪里错了,求大大解释。
4 回复
自己顶一下,求解。
把User.findById(...).populate
改成Line.findById(...).populate
试试。
@pockry 试过了,改成这样还是报同样地错误。
var id = req.params.id;
User.findById(req.session.user._id, function (err, users) {
Line
.findById(id)
.populate('creator','name')
.exec(function(err,line){
res.render('lineDetail', {
title: line.title,
line: line,
users: users
})
})
})
};
@xuyuan923 不应该啊,你的mongoose版本是多少?