MongoDB返回空数组

我试图填充与图像使用通过params发送的用户标识的相册,但我结束了一个空的数组,即使有数据库中的数据。

"use strict" var express = require('express'); var app = express(); var mongoose = require('mongoose'); var Schema = mongoose.Schema console.log('Welcome'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); mongoose.connect('mongodb://localhost/Datab'); var db = mongoose.connection; db.once('open', function () { console.log('Connected to Database'); }); //Schema for the data var userSchema = new mongoose.Schema({ name: String }); var albumSchema = new mongoose.Schema({ userid: String, albumName: String, albumDesc: String, albumThumbnail: String, imageCount: Number, images: [{ type: Schema.Types.ObjectId, ref: 'Image' }] }); var ImageSchema = new Schema({ album_id: { type: String, ref: 'Album' }, imageName: String, imageDescription: String, imageURL: String, likeCount: Number, commentCount: Number }) var Userdata = mongoose.model('Userdata', userSchema); var Album = mongoose.model('Album', albumSchema); var Image = mongoose.model('Image', ImageSchema); //display of albums app.get('/user/:user_id/photos', function (req, res) { var user_id = req.params.user_id Album.find({ userid: user_id }) .populate('images') .exec(function (err, albums) { if (!err) { return res.send({ status: { error: 0, message: "Successful" }, data: { albums: albums } }) } else res.send('Unsuccessful'); }) }); app.listen(3000); 

输出:

 { "status": { "error": 0, "message": "Successful" }, "data": { "albums": [] } } 

为什么我得到一个空数组作为输出?

在mongo shell中查找返回以下结果

 db.Album.find() { "_id": ObjectId("529eed506c7b0a09b2204203"), "albumDesc": "outings", "albumName": "Photoclics1", "albumThumbnail": "http: //192.168.71.250/uploads/cat1_thumb.jpg", "imageCount": "1", "images": ["529ef0016c7b0a09b2204205", "529ef0266c7b0a09b2204206"], "userid": "529eec5a6c7b0a09b22041ff" } 

编辑2:这是我期望得到的输出

 { "error": { "status": 0, "message": "Successful" }, "data": { "albums": [ { "albumName": "myclicks", "albumID": "527102fdaed86d8807000001", "albumDescription": "PhotosIclicked", "albumThumbnailURL": "http: //192.168.71.250/uploads/image.jpg", "imageCount": 2, "images": [ { "imageID": "527102fdaed86d8807000001", "imageName": "mycat", "imageDescription": "billy", "imageURL": "http: //192.168.71.250/uploads/cat.jpg", "imageThumbnailURL": "http: //192.168.71.250/uploads/cat_thumb.jpg", "likeCount": 21, "commentCount": 1 }, { "imageID": "527102fdaed86d8807000001", "imageName": "mycat", "imageDescription": "billy", "imageURL": "http: //192.168.71.250/uploads/cat1.jpg", "imageThumbnailURL": "http: //192.168.71.250/uploads/cat1_thumb.jpg", "likeCount": 21, "commentCount": 1 } ] } ] } 

存储在images数组中的标识符在控制台中显示为一个string。 然而, images字段模式中的定义显示为ObjectIdtypes。 如果您将数据修复为ObjectId或更改数据types,则应解决该问题。

您可以通过遍历集合和数组并将每个元素转换为ObjectId来修复MongoDB控制台中的数据。