node.js - 找不到 mongodb 集合/数据

标签 node.js mongodb mongo-shell

我正在使用 mongoose 开发一个带有 node/express/mongodb 的网络应用程序。我在项目中创建了一个名为 data 的文件夹,并在其中创建了另一个名为 db

的文件夹
  • 数据
    • 数据库

当我启动 mongo 时,我使用 --dbpath 参数并将其指向我创建的项目 data 文件夹。它连接得很好,一切都很好。我一直在向数据库写入一些数据,并且应用程序正确加载它,但是当我打开 mongo shell 时找不到数据。

第一件事是,当我打开 shell 时,我得到的唯一数据库是 test。如果我不指定数据库名称,这是自动创建的吗?如何指定数据库名称?我的 app.js 文件中有以下内容:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/abduldb');

我的猜测是应该正确创建名为 abduldb 的数据库?我在 mongo shell 中没有看到这个。

此外,当使用 test 数据库时,我运行 show collections 但它没有显示任何结果...我的数据到底写在哪里?我现在只有 1 个模型,它看起来像这样:

var mongoose = require('mongoose');

var ItemSchema = new mongoose.Schema({
  title: String,
  body: String
});

mongoose.model('item', ItemSchema);

我正在使用以下方法在路线文件中添加新项目:

router.post('/items', function (req, res, next) {
  var item = new Item(req.body);
  item.save(function(err, item){
    if(err){ return next(err); }
    res.json(item);
  });
});

最佳答案

当您进入 mongo shell 时,请尝试以下命令:“use abduldb”。

您看不到集合的原因是您自动连接到测试数据库。如果您想更改它,请在启动 mongo shell 时运行以下命令:

mongo abduldb

或者,您可以更改 .mongorc.js 中的默认数据库通过添加/更改此行来创建文件:

db = db.getSiblingDB("abduldb")

.mongorc.js 文件可以在/etc/mongorc.js 中找到,但如果它存在于您的主目录(即/home/abduldb/.mongorc.js)中,则会被覆盖。

关于node.js - 找不到 mongodb 集合/数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34857782/

相关文章:

mongodb - 如何从 Mac OS 终端连接到远程 mongo 服务器

mongodb - 未在 mongo shell 中设置的变量

mongodb - 无法通过 mongo shell 连接到 mongodb atlas

python - Heroku 上的 PhantomJS 路径

mysql - 如何将对象从 Node 传递到 Mysql

node.js - 为什么我的 jade 变量未定义?

Node.js ExpressJS 模式匹配不等于

javascript - 过滤 OrionJS 中某个角色可以查看的文档

javascript - 在我执行 git init 并创建一个新分支后,Meteor 崩溃了

php - MongoDB 3.6 的 AggregateCursor 问题