Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongoDB返回空数组_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js MongoDB返回空数组

Node.js MongoDB返回空数组,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我试图用通过params发送的userid来填充相册中的图像,但我最终得到了一个空数组,即使数据库中有数据 "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.us

我试图用通过params发送的userid来填充相册中的图像,但我最终得到了一个空数组,即使数据库中有数据

"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中的Find返回以下结果

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
字段模式中的定义显示为类型
ObjectId
。如果您将数据固定为
ObjectId
或更改数据类型,则问题应该得到解决


如果在相册上的mongo shell中运行simple find,您可以通过迭代集合和数组并将每个元素转换为
ObjectId

来修复MongoDB控制台中的数据。您得到了什么数据?@AlistairNelson编辑了问题代码不可读。我相信你可以把它格式化得更好@hgoebl格式化了代码谢谢,我能读,但我不知道答案,对不起。在我看来不错。