【发布时间】:2017-09-22 14:27:38
【问题描述】:
我有两个集合user 和userMapping 用户对象与其他信息一起映射到用户映射集合中。我在其中使用了引用。
这是我创建的架构:
var userSchema = new userSchema({
userId : {type : mongoose.Schema.Types.ObjectId, ref : 'UserMapping'},
firstName: { type: String, required: true},
middleName : String,
lastName: { type: String, required: true},
jobTitle : String,
signumId : { type: String, required: true},
//userGroupId : { type: String, required: true},
emailAddress : { type: String, required: true, unique: true},
contactNumber : String,
status : Boolean,
image : String,
createdDate : String,
lastUpdatedData : String,
lastLogin: String
});
var userModel = mongoose.model('User', userSchema);
而 UserMapping 架构是:
var userMappingSchema = new userMappingSchema({
userId: String,
userGroupId : { type: String, required: true},
createdDate : String,
lastUpdatedData : String
});
var userMappingModel = mongoose.model('UserMapping', userMappingSchema);
然后我尝试填充数据,我只从用户集合中获取数据,而不是从用户映射集合中获取数据。
数据库保存代码:
var userMappingWithGroup = new userMapping({
"userId": newUser._id,
"userGroupId": req.body.userGroupId
});
userMappingWithGroup.save(function(err, userGroup) {
if (err) {
res.json({
"message": err.message,
"statusCode": err.code
});
} else {
newUser.userId = userGroup._id
newUser.save(function(err) {
if(err){
res.json({
"message": err.message,
"statusCode": err.code
});
}else{
customError.errCode = 113;
next(customError);
}
});
}
});
这里是填充代码:
var User = require('../models/user').userModel;
var userMapping = require('../models/userMapping').userMappingModel;
var fetchEditUser = function(req, res) {
console.log(req.params._id);
User.findOne({userId: req.params._id})
.populate('userId')
.exec(function (err, result) {
if(err) {
res.json({"message":"Error On Fetching Users from DB", "errorCode":500 });
}
else {
console.log(result);
res.json({"message":"success", "errorCode":200, "data": result });
}
});
};
谁能帮助我哪里做错了,我是 mongoDB 的新手。
【问题讨论】:
-
您正在填充用户模型,而引用存储在 userMapping 中。再检查一遍。
-
我想在获取表单用户集合的同时获取数据。请告诉我该怎么做。
-
为此您需要在用户架构中添加一个字段为
userId: {type : mongoose.Schema.Types.ObjectId, ref : 'UserMapping'} -
我也是这样做的,但是只从用户集合而不是从用户映射中获取数据......我将更新我的代码
-
好的,更新代码如何在 user 和 userMapping 中插入数据。