Javascript 猫鼬没有加入两个集合

Javascript 猫鼬没有加入两个集合,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({

所以我按照mongoose文档将两个表“连接”在一起

我有两个模式,第一个是专辑,第二个是流派

我想从流派文档中提取所有流派,只填充流派名称和albumSchema。 当我点击端点查询相册时,我得到一个空对象,我跟踪了文档中的所有内容,所以我不知道,请帮助

Album.js

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上吗?