【问题标题】:Return collections from Mongo using a MEAN stack使用 MEAN 堆栈从 Mongo 返回集合
【发布时间】:2017-08-01 18:27:30
【问题描述】:

我目前正在做一个小组项目。我们正在使用 MEAN 堆栈创建一个简单的 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);

使用此架构,一个名为“挑战”的集合被添加到数据库中。

虽然我们在将文档添加到集合中没有任何困难,但当我们尝试从该集合中返回所有文档时,没有任何返回(超时)。

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

exports.getChallenges = function (req, res){

    var challengeList = {};

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

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

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

【问题讨论】:

  • "没有返回" - 你的意思是 res.send 永远不会成功完成吗? challengeList 是标准 js 对象还是 Mongoose 对象?
  • Res.send 永远不会完成($http GET 请求最终会超时),并且没有任何内容记录到控制台。 ChallengeList 是一个标准的 JavaScript 对象。
  • 您将第二个 find 回调参数 (Challenge) 命名为与您的对象相同的原因是什么?例如有什么理由改用Challenge.find(function(err, chall) 或类似方法吗?
  • 不,这是一个任意分配(可能是一个错误的选择)。用“挑战”代替它似乎没有效果。
  • 啊,我找到了问题所在。而现在我觉得自己很愚蠢。我只需要处理我所做的 if (err) 语句(删除它或使其记录或以其他方式处理它)。这样做之后,一切都像魅力一样。很抱歉浪费您的时间杰夫!不过非常感谢您的帮助!

标签: angularjs node.js mongodb mongoose database


【解决方案1】:

通过阅读 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 中的内容。

【讨论】:

  • 感谢 Jeff - 不幸的是,这并没有解决问题。我会更深入地研究文档。
  • 刚刚更新 - 看起来您缺少 find 方法的条件
  • 问题是我刚刚从mongoose quickstart 中直接提取了代码格式,并且没有正确处理错误情况。感谢您的时间和精力杰夫!如果不是你提出这些问题,今晚就不会解决这个问题。
猜你喜欢
  • 2017-01-03
  • 1970-01-01
  • 2015-02-06
  • 2020-12-29
  • 2016-05-16
  • 2017-11-22
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多