0
我有一个猫鼬数据库架构是类似 -猫鼬架构没有登记错误填充字段
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Discussion Question Schema
*/
var QuerySchema = new Schema({
date: {
type: Date,
default: Date
},
user: {
type: Schema.ObjectId,
ref: 'User'
},
class: {
type: Schema.ObjectId,
ref: 'Class'
}
});
module.exports = mongoose.model('Query', QuerySchema);
,现在我想填充用户架构和类别架构,而不是所有的人都这样的一些领域我该怎么做,在明确控制器
var query = Query.find({}).populate('user','name email avatar');
query.paginate(options,function(err, resp){
if(err) { return handleError(res, err); }
console.log(resp);
return res.status(200).json(resp.results);
});
所以我只填充了'user'
架构'name email avatar'
但我也想填充一些“类”的架构领域的类似'name, strength'
我已经尝试了这种通过以下方式,但还没有得到服务器所需的响应 -
var query = Query.find({}).populate('user class','name email avatar');
var query = Query.find({}).populate('user','name email avatar class');
[更新]
我正在上添加class
到填充字段列表
E:\work\01India\applications-tests\themeforest-8437259-angulr-bootstrap-admin-web-app-with-angularjs\node_modules\mongoose\lib\connection.js:660
throw new MongooseError.MissingSchemaError(name);
^
MissingSchemaError: Schema hasn't been registered for model "Class".
Use mongoose.model(name, schema)
at NativeConnection.Connection.model (E:\work\01India\applications-tests\themeforest-8437259-angulr-bootstrap-admin-web-app-with-angularjs\node_modules\mongoose\lib\connection.js:660:11)
at getModelsMapForPopulate (E:\work\01India\applications-tests\themeforest-8437259-angulr-bootstrap-admin-web-app-with-angularjs\node_modules\mongoose\lib\model.js:2366:26)
at populate (E:\work\01India\applications-tests\themeforest-8437259-angulr-bootstrap-admin-web-app-with-angularjs\node_modules\mongoose\lib\model.js:2207:15)
at Function.Model.populate (E:\work\01India\applications-tests\themeforest-8437259-angulr-bootstrap-admin-web-app-with-angularjs\node_modules\mongoose\lib\model.js:2177:5)
at Immediate.cb (E:\work\01India\applications-tests\themeforest-8437259-angulr-bootstrap-admin-web-app-with-angularjs\node_modules\mongoose\lib\query.js:1011:16)
at Immediate._onImmediate (E:\work\01India\applications-tests\themeforest-8437259-angulr-bootstrap-admin-web-app-with-angularjs\node_modules\mongoose\node_modules\mquery\lib\utils.js:137:16)
at processImmediate [as _immediateCallback] (timers.js:374:17)
我的类架构如下: -
'use strict';
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
/**
* Class Schema
*/
var ClassSchema = new Schema({
date: {
type: Date,
default: Date
},
class: {
type: String,
enum: ['10','12']
},
subjects: [{
type: Schema.ObjectId,
ref: 'Subject'
}]
});
module.exports = mongoose.model('Class', ClassSchema);
和我的课收集的,当我在蒙戈外壳键入下面的查询内容是 -
db.classes.find();
的这个输出是 -
{ "_id" : ObjectId("5635f365e21a4b9015904e08"), "subjects" : [ "5635f365e21a4b9015904e08", "56360f5029a82c0823eac2b8" ], "date" : ISODate("2015-11-01T11:11:33Z"), "__v" : 0, "class" : "10" }
它工作正常,谢谢。我也更新了问题,因为我得到架构未注册的错误我添加此行在我的app.js从其他SO问题“require('./ api/class/class.model');”所以任何确保所有模型在使用前都被正确初始化和注册的方法 – DeadMan
有许多方法可以实现,但常用的方法是创建一个新文件,它需要所有模型,然后像app.js这样的文件需要只是一个文件。 – JohnnyHK
我现在有一个具有字段类的更新用户模式。所以,现在我有了类似query.class和query.user.class的东西,它们都有模式类型'Class',我必须填充它们两个呢?我怎样才能做到这一点 ?你能帮我解决这个问题吗?@JohnnyHK – DeadMan