使用MEAN堆栈从Mongo返回集合

时间:2013-11-20 04:54:36

标签: angularjs node.js mongodb mongoose database

我目前正在开展一个小组项目。我们正在使用MEAN堆栈来创建一个简单的Web应用程序,但是从mongo数据库返回数据时遇到了一些问题。

我们正在尝试返回存储在mongo数据库(在mongolab中托管)的集合中的所有文档,但遇到了检索数据的问题。

我们在节点服务器中使用以下Mongoose代码来创建架构:

var challengeSchema = mongoose.Schema({
name: String,
description: String,
difficulty: Number,
numberOfTimesCompleted: Number,
comments: [{user: String, body: String, date: Date }]
});

var Challenge = mongoose.model('Challenge', challengeSchema);

使用此架构,会将名为“challenge”的集合添加到数据库中。

虽然我们在向集合添加文档时没有遇到任何困难,但是当我们尝试从此集合中返回所有文档时,没有任何内容返回(它超时)。

这是我们目前用于查询数据库的代码:

exports.getChallenges = function (req, res){

    var challengeList = {};

    Challenge.find(function (err, Challenge) {
        if (err)
        challengeList = Challenge;
        console.log(Challenge);
        res.send(challengeList);
    });    
};

我们认为这个问题与这个集合被称为“挑战”并且我们的模型被称为“挑战”这一事实有关。在使用代码一段时间后,我们无法取得很大进展。

任何想法我们可能做错了什么?我们所有人都是mongo和node的新手,觉得我们很可能犯了一个简单的错误。非常感谢!

1 个答案:

答案 0 :(得分:0)

通过阅读Mongoose文档,看起来mongo集合名称将从模型名称中引出,除非您将其作为mongoose.model方法的第三个参数提供。

因此,在您的示例中,您可以尝试:

var Challenge = mongoose.model('Challenge', challengeSchema, 'challenges');

该猫鼬方法的文档在这里:http://mongoosejs.com/docs/api.html#index_Mongoose-model

此外,您似乎没有为mongoose.find方法提供任何条件。以下是该文档的API文档:http://mongoosejs.com/docs/api.html#model_Model.find。所以你想要的东西是:

Challenge.find({find_my_criteria:'here'},function (err, challenges) {
    res.send(challenges);
});

...显然,您可能希望在必要时用req替换您的实际条件/标准。