Intereting Posts

Неверная схема, ожидаемая `mongodb` или` mongodb + srv`

есть проблема, один проект простого узла js app с добавлением и получением данных от пользователя и сохранение в mongo (используйте 3 .. ver), все ОК (сохранение, получение и т. д.), например,

var express = require('express'); var router = express.Router(); var mongo = require('mongodb').MongoClient; var objectID = require('mongodb').ObjectID; var assert = require('assert'); const url = 'mongodb://localhost:27017'; const dbName = 'ldex'; const tblOffers = 'offers'; router.post('/insert', function (req, res, next) { var order = { type: 'Sell', .............. max: req.body.max, protection: req.body.protection, comment: req.body.comment, date: new Date().toDateString() }; mongo.connect(url, function (err, client) { assert.equal(null, err); const db = client.db(dbName); db.collection(tblOffers).insertOne(order, function (err, res) { assert.equal(null, err); console.log('Offer placed'); client.close(); }) }); res.redirect('/exchange') }); 

Но вот другое приложение, синтаксический анализатор, который имеет одно и то же соединение mongo, он добавляет некоторые данные в него с другого веб-сайта (когда вы не используете mongo все в порядке, я хорошо получаю данные), вот часть кода:

 ... let assert = require('assert'); let mongo = require('mongodb').MongoClient; let router = express.Router(); const url = 'mongodb://localhost:27017/'; const dbName = 'ceramo'; const tblOffers = 'items'; ... /* * Get items from specific group */ function getGroupItems(url, callback) { request({uri: url}, function (error, response, body) { let list = []; let $ = cheerio.load(body); $('#tovar').find('a.cat_item_disc_a').each(function(i, elem) { list[i] = 'https://plitkazavr.ru' + $(this).attr('href'); }); callback(list); }); } /* * Parse one item from specific link */ function getItem(url) { request({uri: url}, function (error, response, body) { let list = {}; let $ = cheerio.load(body); $('#item_border').find('> #item_prop > ul').find('li.item_list').each(function(i, elem) { list[$(this).find('.item_cell').first().text()] = $(this).find('div.item_cell.item_val').text(); }); list.price = (parseFloat($('#item_price').text())); list.img = ('https://plitkazavr.ru' + $('#item_img').attr('src')); list.meta = ($('#item_wrap').find('meta[itemprop="description"]').attr("content")); mongo.connect(url, function (err, client) { assert.equal(null, err); const db = client.db(dbName); db.collection(tblOffers).insertOne(order, function (err, res) { assert.equal(null, err); console.log('Offer placed'); client.close(); }) }); }); } router.get('/parse', function (req, res, next) { getGroupItems('https://plitkazavr.ru/Naxos/Clio', function (items) { items.forEach(function(item, i, arr) { setTimeout(function() { getItem(item); }, 1000); }); }); res.end('ok'); }); 

И он отключается от подключения и дает

 `Error: Invalid schema, expected `mongodb` or `mongodb+srv 

Не понимаю, где проблема, помогите пожалуйста …

Ваш URL-адрес MongoDB кажется неполным, он должен включать ваше имя dbName перед dbName как оно будет передано в соединение mongoose, как это

 const url = 'mongodb://localhost:27017/'; const fullUrl = url + dbName; // which should evaluate to this 'mongodb://localhost:27017/ceramo' mongo.connect(fullUrl, function (err, client) {...} 

Не совсем ответ на ваш вопрос, но моя проблема заключалась в том, что значение переменной среды было обернуто ненужными апострофами MONGODB_CONNECTION_URL="'mongodb:...'" . Поэтому он сообщал:

Ошибка: mongodb схема, ожидаемый mongodb или `mongodb + srv