节点populatedb url无法正常工作

时间:2017-09-13 09:51:13

标签: node.js mongodb express mongoose

我正在学习来自https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/mongoose

的ExpressJs教程

现在我已经为mongodb数据库创建了模块,然后在根目录中创建了一个文件populatedb.js。现在我尝试使用命令连接到数据库(如上面链接中描述的那样)

node populatedb mongodb://dbuser:dbpassword@ds133814.mlab.com:33814/local_library_tutorial

但终端响应没有,数据库中没有发生

7 个答案:

答案 0 :(得分:2)

我的兄弟。

我遇到了同样的问题,当我的搜索引导我回答你的问题时,当我看不到任何答案时,我更加难过,但是在搜索之后,我找到了答案!

  1. 确保替换" dbuser:dbpassword"具有实际数据的占位符,例如" Elias:js44889"在你的mongo网址上。

  2. 另外,请确保它与app.js中的相同。

  3. 我认为一切都应该没事,就像我一样。

答案 1 :(得分:1)

您必须在populatedb.js 中包含脚本才能完成工作。

populatedb.js 脚本链接:https://raw.githubusercontent.com/hamishwillee/express-locallibrary-tutorial/master/populatedb.js

在上面链接的populatedb.js文件中插入脚本后,然后运行以下命令在mongoDB中填充数据。

npm install async(如果没有安装异步模块)

node populatedb <your mongodb url>

答案 2 :(得分:1)

如果您在所有模型中使用相同的集合名称,有时您可能会遇到错误,这发生在我身上,直到我意识到我做错了。

例如不要这样做

const authorModel = mongoose.model('author', AuthorSchema)
const bookModel = mongoose.model('author', BookSchema)

如果你不小心这样做,它会抛出这个错误
OverwriteModelError: Cannot overwrite author model once compiled.

改为在“windows 用户”的命令行中写入

node populatedb mongodb+srv://username:password@yourcluster.mongodb.net/yourdatabase

并在您的模型中确保集合不同

const authorModel = mongoose.model('author', AuthorSchema)
const bookModel = mongoose.model('book', BookSchema)

答案 3 :(得分:0)

我也遇到了同样的问题,因为我正在做相同的教程。我为解决这个问题所做的是转到他们在&#34;测试的第一步中提供的populatedb.js链接 - 创建一些项目&#34;或者你可以下载它。点击链接后,他们会提供您可以粘贴到您在项目根目录中创建的populatedb.js文件的测试数据:

  1. npm install async --save
  2. node populatedb <your mongodb url>
  3. 脚本应该运行,您应该在创建它们时看到结果或项目。

答案 4 :(得分:0)

遵循MDN教程,这是我修复的问题:

用户名:Jeff;密码:12345

app.js,更改为:

var mongoDB = 'mongodb://Jeff:123@ds149732.mlab.com:49732/local_library';

命令行提示符,更改为:

node populatedb mongodb://Jeff:12345@ds149732.mlab.com:49732/local_library

答案 5 :(得分:0)

在此发布,因为此答案是我发现该问题的结果。

有同样的问题,错误最终是我在数据库上为管理员设置的密码-编码了特殊字符(显示了警告,我显然忽略了该警告),这导致我无法连接。

答案 6 :(得分:0)

由于错误,我遇到了这个问题几天

zsh: no matches found: <my mongodb url>

首先,我仔细检查了我是否按照教程中的 Testing — create some items 中的说明进行操作。 然后我在终端改了我原来的mongodb URL,去掉结尾。

我原来的 mongoURL =

mongodb+srv://username:password@cluster0.9f24o.mongodb.net/myFirstDatabase?retryWrites=true&w=majority

我的新 mongoURL =

mongodb+srv://username:password@cluster0.9f24o.mongodb.net/myFirstDatabase

我在 express-locallibrary 教程文件夹中运行了这个脚本。

node populatedb mongodb+srv://username:password@cluster0.9f24o.mongodb.net/myFirstDatabase

我现在不确定这是否意味着我还需要更改 app.js 中的链接。

希望这可以为某人节省一些时间!