こんにちは。このスキーマ (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 を呼び出すと空の配列 [] が返されます.... 何が間違っているのかわかりますか? 両方の roomsID の av コレクションにレコードを挿入したことを述べておく必要があります。
よろしくお願いします。
ベストアンサー1
デフォルトでは、Mongoose はモデル名を複数形にしてコレクションの名前を作成するため、avs
ではなくコレクション内を検索しますav
。
コレクション名を 3 番目のパラメータとして渡すことで、明示的にコレクション名を設定できますmodel
。
var Av = mongoose.model('Av', AvSchema, 'av');