我的 mongodb 数据看起来像这样
[{"_id":"66076517c835e00d55714b41","UMKC":{"users":{"professors":[],"students":[],"admins":[]}}}]
,{"_id":"66076517c835e00d55714b41","UNT":{"users":{"professors":[],"students":[],"admins":[]}}}]]
我想根据用户的角色更新用户。需要附加的数据看起来像这样
{
'fname':fname,
'lname':lname,
}
我尝试像这样更新它
router.post('/register', async (req, res) => {
const { fname, lname, email, univName, id, role, password, _id } = req.body;
const adminData = { fname, lname, email, id, password }
const filter = { _id: new ObjectId(_id) }
try {
const updateResult = await Users.updateOne({filter},
{$push:{
'users.admins':{
'fname':fname,
'lname':lname,
'id':id,
'email':email,
'password':password
}
}}
);console.log(updateResult)
} catch (error) {
console.log(error)
}
})
我关注了 mongodb 网站中的一个帖子
用户模型看起来像这样
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
id: {
type: Number,
required: true,
unique: true
},
fname: {
type: String,
required: true,
minlength: 2,
maxlength: 50
},
lname: {
type: String,
required: true,
minlength: 2,
maxlength: 50
},
email: {
type: String,
required: true,
unique: true,
validate: {
validator: (email) => /^[\w-\.]+@([\w-]+\.)+[a-zA-Z]{2,4}$/.test(email),
message: 'Please enter a valid email address.'
}
},
password: {
type: String,
required: true,
minlength: 8
}
});
const Users = mongoose.model('Users', userSchema);
module.exports = Users; // Export the Users model directly
数据库中的数据未更新。我是不是做错了什么?
编辑:
我尝试像这样更改推送内的变量
'users.admins' to 'UNT.users.admins' also `[${univName].users.admins`
只是想看看它是否有效。但没有运气
假设您设置了正确的架构,以下是构建 updateOne 调用的方法:
router.post('/register', async (req, res) => {
const { fname, lname, email, univName, id, role, password, _id } = req.body;
const userData = { fname, lname, email, id, password };
const filter = { _id: new ObjectId(_id) };
let updatePath = `${univName}.users.${role}`;
try {
const updateResult = await Users.updateOne(filter, {
$push: {
[updatePath]: userData
}
});
console.log(updateResult);
res.send(updateResult);
} catch (error) {
console.error(error);
res.status(500).send(error);
}
});
首先,确保您的 Users 模型的架构反映了 MongoDB 文档的结构。您提供的架构与以大学为键且嵌套用户的文档结构不匹配。您需要一个可以处理动态键(大学)或重组数据库的架构。