在查看mongodb集合时,MEAN堆栈没有加载页面

问题描述 投票:0回答:1

我正在玩MEAN堆栈以便自学一些javascript,并使用Angular,我在设置MEAN环境时遇到了麻烦。

我正在尝试连接到我的Mongodb数据库,并阅读“users”集合的内容,该集合应该包含两个记录,“John Doe”和“Jane Doe”。

这就是我的连接字符串的样子,以及我在api.js顶部的常量

//Importing express, Router, Mongoclient and ObjectID
const express = require('express');
const router = express.Router();
const MongoClient = require('mongodb').MongoClient;
const ObjectID = require('mongodb').ObjectID;

//Connect
const connection = (closure) => {
    //Connecting to "mongod://localhost" line, "/mean" is the name of the DB you
    //want to connect too
    return MongoClient.connect('mongodb://localhost:27017/mean', { useNewUrlParser: true }, (err, client) => { 
        if (err) return console.log(err);

        var db = client.db('mean');

        db.collection('users').findOne({}, function (findErr, result) {
            if (findErr) throw findErr;
            console.log(result.name);
            client.close()
        });

        //closure(db);
    });
};

当我从命令行运行“节点服务器”时,它运行正常,没有错误:

C:\Users\jack_\OneDrive\Documents\code\mean>node server
Running on localhost:3000

但是,当我尝试导航到“localhost:3000 / api / users”时,没有任何反应,页面卡住了加载,如果我回到命令行,它会显示“users”中的第一个条目:

C:\Users\jack_\OneDrive\Documents\code\mean>node server
Running on localhost:3000
John Doe

我可以毫无问题地打开“localhost:3000 / api”,它让我到AngularJS登陆页面就好了。

我已经读过堆栈溢出问题并发现mongodb驱动程序可能存在问题,因为他们意外地将测试版发布到npm,所以我检查了我的数据库版本和驱动程序版本:

C:\Users\jack_\OneDrive\Documents\code\mean>"C:\Program Files\MongoDB\Server\4.0\bin\mongod.exe" --version
db version v4.0.2
git version: fc1573ba18aee42f97a3bb13b67af7d837826b47
allocator: tcmalloc
modules: none
build environment:
    distmod: 2008plus-ssl
    distarch: x86_64
    target_arch: x86_64

数据库版本:

C:\Users\jack_\OneDrive\Documents\code\mean>"C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe" --version
MongoDB shell version v4.0.2
git version: fc1573ba18aee42f97a3bb13b67af7d837826b47
allocator: tcmalloc
modules: none
build environment:
    distmod: 2008plus-ssl
    distarch: x86_64
    target_arch: x86_64

看看其他stackoverflow答案,因为我正在使用的版本,MongoClient.connect现在returns a client object containing the database object

所以我修改了代码:

MongoClient.connect('mongodb://localhost:27017/mean', { useNewUrlParser: true }

var db = client.db('mean');

        db.collection('users').findOne({}, function (findErr, result) {
            if (findErr) throw findErr;
            console.log(result.name);
            client.close()

这摆脱了我的原始错误,这是“db.collections不是一个函数”,但是,根据我正在关注的教程,我应该在Web浏览器中看到“users”集合的内容,以及一些其他信息,有点像:

{"status":200,"data":[{"_id":"598ce66bf7d6d70def3d9f6f","name":"John Doe"}

但是,我不是,那么我做错了什么?或者我错过了什么,记住我是在凌晨3点写的,所以我很可能错过了什么

提前致谢

angularjs mongodb mean-stack
1个回答
0
投票

您可以使用以下代码连接db并查找数据

const express = require('express');
const router = express.Router();
const MongoClient = require('mongodb').MongoClient;
const ObjectID = require('mongodb').ObjectID;

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mean";

MongoClient.connect(url, function(err, client) {
  if (err) throw err;
  var db = client.db("mean");
  db.collection("users").findOne({}, function(err, result) {
    if (err) throw err;
    console.log(result.name);
    db.close();
  });
});
© www.soinside.com 2019 - 2024. All rights reserved.