无效的架构,预期的`mongodb`或`mongodb + srv`

时间:2018-02-04 05:57:59

标签: node.js mongodb

有一个问题,一个项目简单节点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

不明白问题出在哪里,请帮忙......

2 个答案:

答案 0 :(得分:1)

您的MongoDB网址似乎不完整,应该包含您的lb5.Text = dr["expectation"].ToString(); ,然后才能将其传递到mongoose连接中

dbName

答案 1 :(得分:0)

不完全回答您的问题,但我的问题是环境变量值包含在不必要的撇号MONGODB_CONNECTION_URL="'mongodb:...'"中。所以报道:

  

错误:架构无效,预期mongodb或`mongodb + srv