我目前正在开展一个小组项目。我们正在使用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的新手,觉得我们很可能犯了一个简单的错误。非常感谢!
答案 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
替换您的实际条件/标准。