Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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
Angularjs 使用平均堆栈从Mongo返回集合_Angularjs_Node.js_Mongodb_Mongoose_Database - Fatal编程技术网

Angularjs 使用平均堆栈从Mongo返回集合

Angularjs 使用平均堆栈从Mongo返回集合,angularjs,node.js,mongodb,mongoose,database,Angularjs,Node.js,Mongodb,Mongoose,Database,我目前正在做一个小组项目。我们使用meanstack来创建一个简单的web应用程序,但是在从mongo数据库返回数据时遇到了一些问题 我们试图返回存储在mongo db(托管在mongolab)中的集合中的所有文档,但在检索数据时遇到问题 我们在节点服务器中使用以下Mongoose代码来创建模式: var challengeSchema = mongoose.Schema({ name: String, description: String, difficulty: Number, numbe

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

我们试图返回存储在mongo db(托管在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);
使用此模式,将一个名为“challenges”的集合添加到数据库中

虽然我们在向集合中添加文档方面没有困难,但当我们尝试返回此集合中的所有文档时,什么都不会返回(超时)

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

exports.getChallenges = function (req, res){

    var challengeList = {};

    Challenge.find(function (err, Challenge) {
        if (err)
        challengeList = Challenge;
        console.log(Challenge);
        res.send(challengeList);
    });    
};
我们认为这个问题与这个集合被称为“挑战”和我们的模型被称为“挑战”的事实有关。在玩了一段时间的代码之后,我们没能取得多大进展


知道我们做错了什么吗?我们都是mongo和node的新手,感觉自己很可能犯了一个简单的错误。非常感谢

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

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

var Challenge = mongoose.model('Challenge', challengeSchema, 'challenges');
mongoose方法的文档如下:

此外,您似乎没有向
mongoose.find
方法提供任何条件。以下是用于此的API文档:。所以你想要的是:

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

…显然,如果需要,您希望用
req
中的内容替换您的实际条件/标准。

谢谢Jeff-不幸的是,这并没有解决问题。我会更深入地查看文档。刚刚更新-看起来您缺少
find
方法的条件问题是我刚刚直接从中提取了代码格式,没有正确处理错误案例。谢谢你的时间和努力杰夫!如果不是你用这些问题刺激我的话,今晚这个问题就不会解决。“没有任何回报”-你是说
res.send
永远不会成功完成吗?而
challengeList
是标准的js对象还是Mongoose对象?Res.send永远不会完成($http GET请求最终超时),控制台上也不会记录任何内容。ChallengeList是一个标准JavaScript对象。是否有理由将第二个
find
回调参数(
Challenge
)命名为与您的对象相同的参数?e、 g.有没有理由不去挑战。改为查找(函数(err,chall)或类似的?不,这是一个任意的赋值(可能是一个错误的选择)。用“挑战”代替它似乎没有效果。啊,伙计-我发现了问题。现在我觉得自己很愚蠢。我只需要处理我所做的if(err)语句(要么删除它,要么将它记录下来,要么以其他方式处理它)。这样做之后,一切都像一个符咒一样工作。抱歉浪费了你的时间杰夫!但非常感谢你的帮助!