gpt4 book ai didi

node.js - 在 Mongoose 中填充数据无法正常工作?

转载 作者:可可西里 更新时间:2023-11-01 10:41:02 27 4
gpt4 key购买 nike

我有两个集合 useruserMapping 用户对象与其他信息一起映射到 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 架构中添加引用。如果你想使用它,你需要

UserMapping.find({}).populate('userId')

因此 UserMapping.find({}) 将获取所有映射,而 populate('userId') 将替换 userIdUser 的对象。

更新:
如果你想从 Users 获取数据然后填充映射,你需要在 User userMappingId 的引用架构。

此外,在我看来 userIdtype 应该是 mongoose.Schema.ObjectId

例子
如果您想获取文章列表及其作者,您必须在 Article 架构中添加 userId 引用。

Article.find().populate("userId")

看看这个: http://mongoosejs.com/docs/populate.html

关于node.js - 在 Mongoose 中填充数据无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43612951/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com