我是一个初学者,正在使用一个教程来学习MEAN堆栈的基础知识。我试图将数据库中的文档返回到网页,但是却收到一个空数组。
我在Mongodb Atlas上创建了一个名为mytasklist的集群。在这里,我创建了一个名为mytasklistdb的数据库。在其中有一个名为mytasklistdb.mytasklisttutorial的表(对象)。我对此的理解是有限的,所以也许我在这里的某个地方犯了一个巨大的错误。我有SQL的经验,但没有Mongo的经验,因此整个“集群”和“集合”对我来说是新的。
无论如何,我的代码如下。我从Mongo连接选项卡中获取了用于数据库连接的字符串。
var express = require('express');
var router = express.Router();
var mongojs = require('mongojs');
var db = mongojs('mongodb+srv://myusername:mypassword@mytasklist-qx0ka.mongodb.net/test?retryWrites=true&w=majority', ['mytasklisttutorial']);
router.get('/tasks', function(req, res, next){
db.mytasklistdb.find(function(err, tasks){
if(err){
res.send(err);
}
res.json(tasks);
});
});
module.exports = router;
我的数据库对象如下:
_id:5db5f1f31c9d440000c3e7fe
title:"Walk the dog" - this is a string
isDone:false - this is boolean
我只是得到一个空数组,但是在本教程中,那个家伙正在获取这些“文档”。我在做什么错了?
编辑:我意识到本教程示例的“任务”部分与一个名为“任务”的数据库有关。我的被称为“ mytasklistdb”。因此,我改变了这一点。我还在传递给mongojs的行中添加了一个带有我的集合名称的参数。
我已经更改了上面的代码以反映这一点
答案 0 :(得分:1)
我的猜测是您没有传递查询,只是传递了find()方法中的回调,可能您需要执行以下操作:
db.tasks.find({},function(err, tasks){
if(err){
res.send(err);
}
res.json(tasks);
});
答案 1 :(得分:1)
解决方案是用我的数据库名称替换'task'和'test'。如下:
var express = require('express');
var router = express.Router();
var mongojs = require('mongojs');
var db = mongojs('mongodb+srv://James:Noentry1@mytasklist-qx0ka.mongodb.net/mytasklistdb?retryWrites=true&w=majority', ['mytasklisttutorial']);
router.get('/tasks', function(req, res, next){
db.mytasklisttutorial.find(function(err, tasks){
if(err){
res.send(err);
}
res.json(tasks);
});
});
module.exports = router;