node.js - 更新 MERN 堆栈中的模式
问题描述
我有一个用户模式模型,其中address
(应该)通过地址模式模型填充该字段。为了更新我在请求正文中传递的地址架构,并userId
通过从req.user
. 我可以向地址字段添加新条目,但是当我查看 Atlas 中的用户模型时,它没有被填充。
我的假设是它会根据用户的 ID 自动填充它,但事实并非如此。我是不是搞错了?
路线:
const addAddress = async (req, res) => {
try {
console.log(req.body);
// Destruct Request
const { name, street, city, state, zipcode } = req.body;
// Define User ID
const user = req.user.id;
const addUserAddress = await User.findById(user, (error, address) => {
if (error) {
return res
.status(500)
.json({ success: false, message: 'An unexpected error occurred.' });
}
let newAddress = new Address({
_userId: user,
name,
street,
city,
state,
zipcode,
});
newAddress.save((err0r) => {
if (error) {
return res
.status(500)
.json({ success: false, message: 'An unexpected error occurred.' });
}
});
});
res.json(addUserAddress);
} catch (error) {
console.error(error);
res.status(500).send('Error adding an address, please try again.');
}
};
地址型号:
const AddressSchema = new mongoose.Schema({
_userId: {
type: ObjectId,
required: true,
ref: 'User',
},
name: {
type: String,
required: true,
unique: false,
},
street: {
type: String,
required: true,
unique: false,
},
city: {
type: String,
required: true,
unique: false,
},
state: {
type: String,
required: true,
unique: false,
},
zipcode: {
type: String,
required: true,
unique: false,
},
});
const Address = mongoose.model('Address', AddressSchema);
exports.Address = Address;
用户模型:
const UserSchema = new mongoose.Schema({
...
address: [
{
type: ObjectId,
ref: 'Address',
},
],
...
});
解决方案
ID 被插入,但信息不会自动填充。为了填充信息,您必须执行以下操作...
const usersWithAddress = await User.find({}).populate("address", "city state zip", Address) // Pass in the Address model as the 3rd argument.
填充将在没有地址模型的情况下工作,但我过去有时没有传递它时遇到问题。
推荐阅读
- jquery - 将基本身份验证凭据放入 jQuery 脚本中?
- javascript - 用于使用 javascript/jquery 创建模板的模板 sdk
- php - 重定向太多。XAMPP ; 本地主机;MYSQL (PHPMYADMIN)
- upload - 新的谷歌网站 - 如何上传 pdf
- c# - 在多行字符串中使用枚举名称将每个字符串行与枚举的整数值相关联。有没有更好的办法?
- python - Django restframework Error binding parameter
- macos - macOS - [NSValue valueWithCGAffineTransform:]
- angular - 角度测试随机失败
- python - 为什么在 elif 语句中使用输入时会出现语法错误?
- c# - DI/CI Dependency/Constructor injection,怎么知道有哪些对象可用?