Я следую учебному пособию Express на MDN , однако я сталкиваюсь с вышеуказанной проблемой при запуске команды node populatedb <your_mongodb_url>
(заменена на фактический URL). Командная строка возвращает The system cannot find the file specified.
. Выполнение команды node populatedb <blank>
с удаленным URL или просто замененным на '' возвращает:
This script populates some test books, authors, genres and bookinstances to your database. Specified database as argument - e.g.: populatedb mongodb+srv://cooluser:coolpassword@cluster0-mbdj7.mongodb.net/local_library?retryWrites=true
MongoDB connection error: MongoParseError: Invalid connection string
, по крайней мере, я знаю, что мой файл populatedb. js обнаруживает. Я правильно заменил имя пользователя и пароль в URL, а также имя базы данных. Любая помощь в решении этой проблемы очень ценится.
Мое приложение. js голова выглядит так:
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
//Set up mongoose connection
var mongoose = require('mongoose');
var mongoDB = 'mongodb+srv://<myusername>:<mypassword>@cluster0-qzoog.mongodb.net/local_library?retryWrites=true';
mongoose.connect(mongoDB, { useNewUrlParser: true });
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
Мой жанр. js файл:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var GenreSchema = new Schema(
{
name : {type: String, required: true},
}
);
//Virtual for genre' URL
GenreSchema
.virtual('url')
.get(function() {
return '/catalog/genre/' + this._id;
});
//Export model
module.exports = mongoose.model('Genre', GenreSchema);
Мой заполненный. js заголовок файла:
#! /usr/bin/env node
console.log('This script populates some test books, authors, genres and bookinstances to your database. Specified database as argument - e.g.: populatedb mongodb+srv://cooluser:coolpassword@cluster0-mbdj7.mongodb.net/local_library?retryWrites=true');
// Get arguments passed on command line
var userArgs = process.argv.slice(2);
/*
if (!userArgs[0].startsWith('mongodb')) {
console.log('ERROR: You need to specify a valid mongodb URL as the first argument');
return
}
*/
var async = require('async')
var Book = require('./models/book')
var Author = require('./models/author')
var Genre = require('./models/genre')
var BookInstance = require('./models/bookinstance')
var mongoose = require('mongoose');
var mongoDB = userArgs[0];
mongoose.connect(mongoDB, { useNewUrlParser: true });
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));