查看 mongodb 集合时 MEAN 堆栈未加载页面
MEAN stack not loading page when looking at mongodb collection
我正在尝试使用 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);
});
};
当我从命令行 运行 "node server" 时,它 运行 没有错误:
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 登录页面。
我阅读了关于 Whosebug 的问题,发现 mongodb 驱动程序可能存在问题,因为他们不小心将测试版发布到了 npm,所以我检查了我的数据库版本和驱动程序版本:
C:\Users\jack_\OneDrive\Documents\code\mean>"C:\Program Files\MongoDB\Server.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.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
查看其他 Whosebug 答案,由于我使用的版本,MongoClient.connect 现在
所以我修改了代码:
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 is not a function",但是,根据我正在学习的教程,我应该在 Web 浏览器中看到 "users" 集合的内容,连同一些其他信息,有点像这样:
{"status":200,"data":[{"_id":"598ce66bf7d6d70def3d9f6f","name":"John Doe"}
但是,我不是,
那我做错了什么?还是我遗漏了什么,请记住我是在凌晨 3 点写这篇文章的,所以我很可能遗漏了什么
提前致谢
您可以使用以下代码连接数据库并查找数据
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();
});
});
我正在尝试使用 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);
});
};
当我从命令行 运行 "node server" 时,它 运行 没有错误:
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 登录页面。
我阅读了关于 Whosebug 的问题,发现 mongodb 驱动程序可能存在问题,因为他们不小心将测试版发布到了 npm,所以我检查了我的数据库版本和驱动程序版本:
C:\Users\jack_\OneDrive\Documents\code\mean>"C:\Program Files\MongoDB\Server.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.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
查看其他 Whosebug 答案,由于我使用的版本,MongoClient.connect 现在
所以我修改了代码:
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 is not a function",但是,根据我正在学习的教程,我应该在 Web 浏览器中看到 "users" 集合的内容,连同一些其他信息,有点像这样:
{"status":200,"data":[{"_id":"598ce66bf7d6d70def3d9f6f","name":"John Doe"}
但是,我不是, 那我做错了什么?还是我遗漏了什么,请记住我是在凌晨 3 点写这篇文章的,所以我很可能遗漏了什么
提前致谢
您可以使用以下代码连接数据库并查找数据
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();
});
});