Javascript 获取时发送嵌套对象
我有一个非常基本的模式,里面有另一个叫做Vehicle的对象Javascript 获取时发送嵌套对象,javascript,mongoose,Javascript,Mongoose,我有一个非常基本的模式,里面有另一个叫做Vehicle的对象 let rentSchema = new Schema({ code: { type: Number }, vehicle: { type: mongoose.Schema.Types.ObjectId, ref: 'Vehicle' }, ongoing: { type: Boolean, default: fal
let rentSchema = new Schema({
code: {
type: Number
},
vehicle: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Vehicle'
},
ongoing: {
type: Boolean,
default: false
}
}, {collection: 'RentCollection'});
在控制器中查找所有
exports.getRent = function (req, res) {
// Find in the DB
rentSchema.find({}, function (err, rent) {
if (err) res.status(400).send(err);
res.json(rent);
});
};
响应以租金数组的形式出现,但对象租金中缺少车辆对象。为什么呢
_id: "5e04c19d0a0a100f58bd64b5"
__v: 0
ongoing: false
必须使用“填充”方法来填充车辆对象
从文档:
rentSchema.
findOne({}).
populate('vehicle').
exec(function (err, obj) {
if (err) return handleError(err);
console.log(obj);
});
此外,在当前代码中,您尚未设置模型:
RentCollection=mongoose.model'RentCollection',rentSchema 以下是一步一步的解释,以使其发挥作用: 1-首先,您需要创建一个模型并按如下方式导出:
{
"_id": "5e0f465205515667746fd51a",
"name": "Vehicle 1",
"__v": 0
}
{
"ongoing": false,
"_id": "5e0f46b805515667746fd51d",
"code": 1,
"vehicle": "5e0f465205515667746fd51a",
"__v": 0
}
rent.js
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
let rentSchema = new Schema(
{
code: {
type: Number
},
vehicle: {
type: mongoose.Schema.Types.ObjectId,
ref: "Vehicle"
},
ongoing: {
type: Boolean,
default: false
}
},
{ collection: "RentCollection" }
);
module.exports = mongoose.model("Rent", rentSchema);
2-假设您拥有此车型:
vehicle.js
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
let vehicleSchema = new Schema(
{
name: String
},
{ collection: "VehicleCollection" }
);
module.exports = mongoose.model("Vehicle", vehicleSchema);
3-首先,让我们在VehicleCollection中创建一个如下所示的车辆:
{
"_id": "5e0f465205515667746fd51a",
"name": "Vehicle 1",
"__v": 0
}
{
"ongoing": false,
"_id": "5e0f46b805515667746fd51d",
"code": 1,
"vehicle": "5e0f465205515667746fd51a",
"__v": 0
}
4-然后让我们使用此车辆id在RentCollection中创建一个租金文档,如下所示:
{
"_id": "5e0f465205515667746fd51a",
"name": "Vehicle 1",
"__v": 0
}
{
"ongoing": false,
"_id": "5e0f46b805515667746fd51d",
"code": 1,
"vehicle": "5e0f465205515667746fd51a",
"__v": 0
}
5-现在我们可以使用以下代码,对车辆进行租赁
const Rent = require("../models/rent"); //todo: change to path to the rent.js
exports.getRent = function(req, res) {
Rent.find({})
.populate("vehicle")
.exec(function(err, rent) {
if (err) {
res.status(500).send(err);
} else {
if (!rent) {
res.status(404).send("No rent found");
} else {
res.json(rent);
}
}
});
};
6-结果将是:
[
{
"ongoing": false,
"_id": "5e0f46b805515667746fd51d",
"code": 1,
"vehicle": {
"_id": "5e0f465205515667746fd51a",
"name": "Vehicle 1",
"__v": 0
},
"__v": 0
}
]
消息:尚未为车型注册架构。↵使用mongoose.modelname,schemaaah,您还没有设置模型。最新答案