您好,我有这个架构(称为 schema.js):
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var RoomSchema = new Schema({
name: { type: String, required: true, index: { unique: true } },
people: { type: Number, required: true },
childrens: {type: Number, required: true},
total: {type: Number, required: true}
});
var Room = mongoose.model('Room', RoomSchema);
var AvSchema = new Schema({
roomId: {type: Schema.Types.ObjectId, ref: 'Room'},
people: { type: Number, required: true },
childrens: {type: Number, required: true},
total: {type: Number, required: true}
});
var Av = mongoose.model('Av', AvSchema);
module.exports = {
Room: Room,
Av: Av
};
在我的路线文件中:
module.exports = function(app) {
var model = require('../models/Schema');
app.get('/api/rooms', function(req, res) {
model.Room.find(function(err, rooms) {
if (err)
res.send(err);
res.json(rooms);
});
});
app.get('/api/av', function(req, res) {
model.Av.find().populate('roomId').exec(function(err, av) {
if (err)
res.send(err);
res.json(av);
});
});
};
db 的图片:
GET /api/rooms - 响应:
[{
"_id": "5444d0dd9a31437167eea816",
"name": "Single",
"people": 1,
"childrens": 1,
"total": 4
}, {
"_id": "5444d1009a31437167eea817",
"name": "Double",
"people": 2,
"childrens": 2,
"total": 10
}]
当我调用 api/rooms 时看起来不错,但是当我调用 api/av 时,我得到一个空数组 [] …。知道我做错了什么吗?我应该提一下,我已经在两个 roomID 的 av 集合中插入了记录
先感谢您。
原文由 Teodor 发布,翻译遵循 CC BY-SA 4.0 许可协议
默认情况下,Mongoose 将模型名称复数以得出集合的名称,因此 Mongoose 正在查找
avs
集合而不是av
。您可以通过将集合名称作为第三个参数传递给
model
来显式设置集合名称: