一点背景知识:我正在用 node.js 构建一个在线多人 Web 应用程序,有点类似于 Magic: The Gathering(但不是 M:TG 克隆)。所以我有了卡片和套牌的概念。如果我只有一个卡片模式,我可以很好地查询它。这是我的卡片架构:
var CardSchema = new Schema({
cardName: { type: String, required: true, unique: true },
cardType: { type: String, required: true }
health: { type: Number },
power: { type: Number }
});
module.exports = mongoose.model('Card', CardSchema);
然后在我的数据层中,我可以发出这样的查询并返回预期的结果:
Card.find().sort('cardName').exec(function (err, cardList) { ... });
但是,一旦我添加了一个名为 Deck 的新模式,其中包含对 Card 模式的引用:
var DeckSchema = new Schema({
deckName: { type: String, required: true, unique: true },
cards: [{ type: Schema.Types.ObjectId, ref: 'Card' }]
});
module.exports = mongoose.model('Deck', DeckSchema);
我之前获取所有卡片的查询没有返回任何内容:
Card.find().sort('cardName').exec(function (err, cardList) { ... });
我不确定我是否缺少人口方面的东西。我查看了有关人口的 Mongoose 文档,但我似乎无法弄清楚为什么添加这个新模式会导致我无法检索卡片。我确信这很简单,但我对 Mongoose 和 MongoDB 还很陌生,所以我确定我错过了一些简单的东西。