node.js - 将我的应用程序(node、express、mongo)与本地数据库连接并查询

标签 node.js mongodb express passport.js

我使用 node.js、express.js、passport.js 和 mongodb 构建了一个小型应用程序。我是这项技术的新手,因此我尝试在将代码上传到服务器上并将其与 mongolab 连接之前在本地进行测试。现在我的问题是,我无法使用 mongo shell 在本地查看或查询所有用户,因此,每次添加用户时,我都无法查看是否真的添加了它。到目前为止我的代码如下:

app.js

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var port = process.env.PORT || 3000;

var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;

var mongoose = require('mongoose');
var flash = require('connect-flash');
var session = require('express-session');

var routes = require('./routes/index');
var users = require('./routes/users');

var configDB = require('./config/database.js');
mongoose.connect(configDB.url);

database.js (config/database.js)

module.exports = {
  url: 'mongodb://localhost/expressauth',
};

user.js(模型/user.js)

var mongoose = require('mongoose');
var bcrypt   = require('bcrypt-nodejs');

var userSchema = mongoose.Schema({
  local: {
    name: String,
    email: String,
    password: String,
  },
});

userSchema.methods.generateHash = function(password) {
  return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null);
};

userSchema.methods.validPassword = function(password) {
  return bcrypt.compareSync(password, this.local.password);
};

module.exports = mongoose.model('User', userSchema);

到目前为止,代码运行良好,每次添加新用户时,我都能够获取用户 ID(类似于 59397add4905d20f0329125c)和密码。

现在我尝试通过 mongo shell 查看所有用户,因此我在终端中输入 MONGO,然后输入 SHOW DBS,这样我就可以看到我的所有数据库。

我可以找到通过我的database.js(url:'mongodb://localhost/expressauth')创建的名为expressauth的数据库,因此我切换到它(使用expressauth),最后我尝试使用我在文档=> db.expressauth.find()中找到的方法进行查询(类似于mysql中的SELECT *)。

但我没有收到任何数据。所以我无法测试我的应用程序(这实际上是我在 github 上找到的一个 Web 应用程序: https://github.com/danielgynn/express-authentication/

有什么建议说明为什么我的 mongoshell 无法工作吗?

最佳答案

如果您在 mongoshell 中并且已经调用 use expressauth,那么您应该能够执行 show collections 来查看该数据库中有哪些集合。 userusers 集合应该存在,具体取决于您的配置。然后您可以调用 db.users.find() 来获取集合中的所有用户。

关于node.js - 将我的应用程序(node、express、mongo)与本地数据库连接并查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44441237/

相关文章:

c# - 在 NodeJS 中模拟 C# 溢出

javascript - findOneAndUpdate() 基于查找查询条件的子数组

c++ - 在 Mongo CXX 中取消设置文档元素

node.js - 使用 MongoDB 进行数据分区

mongodb - Mongodb 部分备份

node.js - 对 socket.io 使用 http 和 https

node.js - Mongoose 用新旧之和更新变量

node.js - 使用node上传图片到Heroku并获取其url

node.js - 如何在 Alpine :3. 8中安装Nodejs v13.0.1?

javascript - 错误 : request entity too large