javascript - Mongoose 模型不保存引用模型?
问题描述
我目前正在尝试使用 mongo 和 express 设置后端 API,并且我正在努力让创建路由工作。这是我的路线:
reservationsRouter.post("/", (req, res) => {
assert.notEqual(req.body.user, null);
const user = User.findById(req.body.user);
const reservation = new Reservation({
dateStart: req.body.dateStart,
dateEnd: req.body.dateEnd,
user: user
});
res.json(reservation);
reservation.save();
});
我的预订架构:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const ReservationSchema = Schema({
user: { type: Schema.ObjectId, ref: "User", required: true },
dateStart: { type: String, required: true },
dateEnd: { type: String, required: true }
});
module.exports = ReservationSchema;
和我的用户架构:
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const userSchema = Schema({
_id: { type: String, required: true },
firstName: { type: String, required: true },
lastName: { type: String, required: true },
reservations: [{ type: Schema.Types.ObjectId, ref: "Reservation" }]
});
module.exports = userSchema;
我的问题是,当我保存预订并获取所有预订时,它没有user
属性,即使我已经在模式中指定了它:
{
"dateStart": "1234",
"dateEnd": "12345",
"_id": "5b127d9d3d8256eedd31173b"
}
编辑:我已经重写了路线,以便回调返回与用户的预订,但是,当我获取所有预订时,用户不包括在上面的示例中。
reservationsRouter.post("/", (req, res) => {
assert.notEqual(req.body.user, null);
const user = User.findById(req.body.user, (err, user) => {
if (err) res.send(err);
else {
const reservation = new Reservation({
dateStart: req.body.dateStart,
dateEnd: req.body.dateEnd,
user: user
});
res.json(reservation);
reservation.save();
}
});
});
您可能想查看整个仓库:https ://github.com/SchulenbergOrg/backend/tree/mongo
解决方案
推荐阅读
- mysql - 使用 mysql 查询提取字符串的某些部分
- android - 当弹出窗口处于活动状态时,使屏幕变暗,期望选定的视图
- javascript - 如何在允许 Promise 挂起的同时创建待处理的请求列表?
- java - 使用 docx4j 转换 docx 中的 AltChunks
- javascript - 穿透 Z-index
- javascript - Highcharts:跨多个图表同步轴刻度
- python - 计算数组中所有点与二维中另一个点之间的距离
- excel - 在 selenium 中跨多张 Excel 执行数据
- matlab - 为什么我的函数只显示一个输出变量?
- python - 为什么 geopandas.read_file 在 windows 和 linux 上返回不同的结果?