Javascript 猫鼬没有加入两个集合
所以我按照mongoose文档将两个表“连接”在一起 我有两个模式,第一个是专辑,第二个是流派 我想从流派文档中提取所有流派,只填充流派名称和albumSchema。 当我点击端点查询相册时,我得到一个空对象,我跟踪了文档中的所有内容,所以我不知道,请帮助 Album.jsJavascript 猫鼬没有加入两个集合,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,所以我按照mongoose文档将两个表“连接”在一起 我有两个模式,第一个是专辑,第二个是流派 我想从流派文档中提取所有流派,只填充流派名称和albumSchema。 当我点击端点查询相册时,我得到一个空对象,我跟踪了文档中的所有内容,所以我不知道,请帮助 Album.js var mongoose = require('mongoose'); var moment = require('moment'); var AlbumSchema = new mongoose.Schema({
var mongoose = require('mongoose');
var moment = require('moment');
var AlbumSchema = new mongoose.Schema({
artist: { type: String, default: ''},
genre: { type: String, default: ''},
info: { type: String, default: ''},
title: { type: String, default: ''},
label: { type: String, default: ''},
tracks: { type: String, default: ''},
cover: { type: String, default: ''},
genreDetails: [{type: mongoose.Schema.Types.ObjectId, ref: 'Genre'}],
timestamp: {type: String, default: () => moment().format("dddd, MMMM Do YYYY, h:mm:ss a") }
});
module.exports = mongoose.model('Album', AlbumSchema);
Genre.js
var mongoose = require('mongoose');
var moment = require('moment');
var GenreSchema = new mongoose.Schema({
name: { type: String, unique: true, default: ''},
timestamp: {type: String, default: () => moment().format("dddd, MMMM Do YYYY, h:mm:ss a") }
});
module.exports = mongoose.model('Genre', GenreSchema);
AlbumController.js
getAlbumDetailsAndGenres: function(id, callback) {
Album.findById(id)
.populate({path: 'genreDetails', select: 'name'})
.exec(function(err, result) {
if (err) {
callback(err, null);
return;
}
callback(null, result);
return;
});
}
那么我到底错过了什么
提前谢谢
试试这个:
getAlbumDetailsAndGenres: function(id, callback) {
Album.findOne({_id:new mongoose.mongo.ObjectID(id)})
.populate('genreDetails','name')
.exec(function(err, result) {
if (err) {
callback(err, null);
return;
}
callback(null, result);
return;
});
}
要保存:
genreDetails=[];
genreDetails.push(new mongoose.mongo.ObjectID('....id..here...'));
var album = new Album({
artist:"Aerosmith",
gerne:"Rock N Roll",
info:"Blar",
title:"I dont want to miss a thing",
label:"Sony",
tracks:10,
cover:"Aerosmith",
genreDetails:genreDetails
});
album.save();
请提供数据库中存储的内容和结果的示例。请参阅随附的结果图片,谢谢。注意:为了清晰起见,我对genreList的GenRedDetails进行了一些更改。您的mongodb版本是什么?而且您的唱片集没有
genreList
中的generies的\u id
,因此,首先更新genreList
数组。。。但是我建议您将专辑的\u id
保存在流派集合中…版本3.6.4我想我将其作为流派详细信息:[{type:mongoose.Schema.Types.ObjectId,ref:'Genre'}]引用流派模式。您的gerneList在数据库中是空的,因此您如何在不保存itah的情况下进行填充。。你能告诉我怎样才能把它保存到genreList上吗?