Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Node.js MongoDB代码没有';我不想和MongoDB说话_Node.js_Mongodb_Express_Mean Stack - Fatal编程技术网

Node.js MongoDB代码没有';我不想和MongoDB说话

Node.js MongoDB代码没有';我不想和MongoDB说话,node.js,mongodb,express,mean-stack,Node.js,Mongodb,Express,Mean Stack,我一直在乱搞一些代码,现在只是想学习平均堆栈,但我总是在两台不同的计算机上停留在同一点上。我正在Youtube上做一个教程,用的是通常的NodeJS、Express、MongoDB,基本上都是这个缩写词。我飞到了我准备好与数据库建立连接的地步(因此我确实执行了NPM初始化,执行了express、Mongodb(我相信MongoJS也已安装并保存)和ejs的安装),然后我运行应用程序只是为了得到一组括号[]在屏幕上,没有其他内容。数据库中有内容。我正在使用本地安装的Mongo和MongoAtlas

我一直在乱搞一些代码,现在只是想学习平均堆栈,但我总是在两台不同的计算机上停留在同一点上。我正在Youtube上做一个教程,用的是通常的NodeJS、Express、MongoDB,基本上都是这个缩写词。我飞到了我准备好与数据库建立连接的地步(因此我确实执行了NPM初始化,执行了express、Mongodb(我相信MongoJS也已安装并保存)和ejs的安装),然后我运行应用程序只是为了得到一组括号[]在屏幕上,没有其他内容。数据库中有内容。我正在使用本地安装的Mongo和MongoAtlas online版本,两者都会产生相同的结果。我知道出现的唯一问题是,如果我尝试检查Mongo版本或在命令行中运行它,它会表现得好像不存在,但它正在运行作为一项服务。我有两个版本的这两个都有相同的问题。我已经包括了下面的代码。应该注意的是,只有一台使用MongoCompass的计算机将实际访问MongoAtlas。这表明防火墙问题,我无法控制我的一台计算机,但我的应用程序仍然可以访问本地数据库

var express = require('express');
var router = express.Router();
//import mongojs from 'mongojs';
var mongojs = require('mongojs');
var db = mongojs('mongodb://127.0.0.1:27017/?snappy=disabled&gssapiServiceName=mongodb', ['test']);

router.get('/tasks', function(req, res, next){
    db.tasks.find(function(err, tasks){
        if(err){
            res.send(err);
        }
        res.json(tasks);
    });
});
module.exports = router;

您只获得
[]
的唯一原因是因为您在该集合中没有数据。因此,您必须向该集合添加新数据,您的结果将与
[]
不一样,但有您的数据

要添加数据,您可以尝试创建
创建
任务路线

您可以在创建任务路线时使用下面的代码

router.post('/tasks',函数(req,res,next){
db.tasks.save(请求主体、函数(错误、任务){
if(err)返回res.status(400)。send(err);
资源状态(201)。发送(任务);
});
});
确保您的
req.body
未定义。如果
未定义
,请添加
body解析器
,如下代码所示:

app.use(express.json());
use(express.urlencoded({extended:true}));
现在,您可以尝试使用postman添加数据,并使用
post
方法调用
tasks
路由,并且不要忘记在
body
中添加数据

创建一些数据后,现在可以再次尝试调用get
tasks
routes,然后将看到
tasks
结果


我希望它能帮助您。

首先,检查您的机器中是否安装了mongod服务器

如果您正在使用ubuntu,请点击以下命令:-

sudo service mongod status
sudo service mongod start
如果不运行,则按照以下步骤重新启动:-

1) 安装mongodb服务器

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

sudo apt-get update

sudo apt-get install -y mongodb-org
2) 现在通过命令启动MongoDB的服务:-

sudo service mongod status
sudo service mongod start
3) 我从不使用mongojs与mongob建立连接,请尝试使用mongodb模块

npm i mongodb 
4) 按如下方式与DB建立连接:-

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');

// Connection URL
const url = 'mongodb://localhost:27017';

// Database Name
const dbName = 'myproject';

// Use connect method to connect to the server
MongoClient.connect(url, function(err, client) {
  assert.equal(null, err);
  console.log("Connected successfully to server");

  const db = client.db(dbName);
   findDocuments(db, function() {
  client.close();
});
    });



const findDocuments = function(db, callback) {
  // Get the documents collection
  const collection = db.collection('documents');
  // Find some documents
  collection.find({}).toArray(function(err, docs) {
    assert.equal(err, null);
    console.log("Found the following records");
    console.log(docs)
    callback(docs);
  });
}
希望这将帮助您了解MongoDB连接


或者,您也可以使用功能丰富的著名ORM执行相同的操作,即

您的计算机中是否安装并运行mongod server,请告诉我您使用的是哪个操作系统?