Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.10.2018, 19:38
Аспирант
Отправить личное сообщение для Andrew K Посмотреть профиль Найти все сообщения от Andrew K
 
Регистрация: 15.11.2014
Сообщений: 50

db.collection равен undefined в MongoDB
Здравствуйте! Начал изучать MongoDB и столкнулся с непонятным поведением базы данных.

Вот код подключающий базу данных MongoDB выводящий свойство collection:
let MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/test', { useNewUrlParser: true }, function(err, db) {

    console.log(db.collection);  // undefined
});

Проблема в том, что в объекте db нет свойства collection. Из-за этого я не могу, например, создать новую коллекцию (db.collection('mytable')). В чем может быть причина?

Может я неверно установил Монго? Но так она бы вообще не работала...
Ответить с цитированием
  #2 (permalink)  
Старый 21.10.2018, 21:43
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

А не надо ничего создавать. Просто писать
db.collection('mytable').insert(...
Ответить с цитированием
  #3 (permalink)  
Старый 22.10.2018, 07:06
Аспирант
Отправить личное сообщение для Andrew K Посмотреть профиль Найти все сообщения от Andrew K
 
Регистрация: 15.11.2014
Сообщений: 50

Этот код не сработает потому что db.collection равен undefined (в объекте db нет такого свойства или метода).
let MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/test', { useNewUrlParser: true }, function(err, db) {
    console.log(db.collection);  // undefined

    db.collection('mytable').insert({'name': "Andrew"}); // db.collection is not a function
});
Ответить с цитированием
  #4 (permalink)  
Старый 22.10.2018, 07:38
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Шеф! Всё пропало!
Свойства нет, оно не работает!

(а у меня работает)
var url = 'mongodb://xxxxxx:yyyyy@ds115701.mlab.com:15701/bookexpress';
MongoClient.connect(url, function(err, db) {
  db.collection('asdfg').insert({ text: 'ASDFGH' });
  db.close();
});
Изображения:
Тип файла: jpg Untitled-1.jpg (92.9 Кб, 6 просмотров)
Ответить с цитированием
  #5 (permalink)  
Старый 22.10.2018, 08:19
Аспирант
Отправить личное сообщение для Andrew K Посмотреть профиль Найти все сообщения от Andrew K
 
Регистрация: 15.11.2014
Сообщений: 50

Особенно бесит во всех этих консольных программах что никогда парой команд нельзя что-то поставить. Может в документации написано про пару команд, а в реальности после этого получаешь 50 строк ошибок. И вот сидишь пол дня и читаешь форумы вставляя непонятные команды чтобы исправить непонятную ошибку. Черт возьми, я просто хочу попробовать этот инструмент. Нафига его проектировать так, чтобы без танцев с бубном нельзя было поставить. В конце концов почему нельзя написать нормальную инструкцию где был бы дан железобетонный способ установки программы? Но нет. Это слишком очевидно и просто. Обязательно нужно сидеть, исправлять ошибки которые ты не совершал, перечитывать темы таких же неудачников, материться и портить себе настроение.

Даже после установки этой базы данных она не может нормально работать. А сейчас после установок и переустановок она вообще не запускается. Полностью с вам согласен — всё пропало.

Последний раз редактировалось Andrew K, 22.10.2018 в 08:26.
Ответить с цитированием
  #6 (permalink)  
Старый 22.10.2018, 11:41
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

https://metanit.com/nosql/mongodb/2.2.php
но есть же драйвер mongoose (он хороший)
И кстати, на официальном сайте Монги совершенно железобетонные инструкции по установке - для всех ОС, поимённо.

Последний раз редактировалось Audaxviator, 22.10.2018 в 12:03.
Ответить с цитированием
  #7 (permalink)  
Старый 22.11.2018, 17:58
Новичок на форуме
Отправить личное сообщение для agsh Посмотреть профиль Найти все сообщения от agsh
 
Регистрация: 05.02.2015
Сообщений: 7

Сообщение от Andrew K Посмотреть сообщение
Этот код не сработает потому что db.collection равен undefined (в объекте db нет такого свойства или метода).
let MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/test', { useNewUrlParser: true }, function(err, db) {
    console.log(db.collection);  // undefined

    db.collection('mytable').insert({'name': "Andrew"}); // db.collection is not a function
});
Потому что в последних версиях драйвера подключение возвращает инстанс MongoClient, а не Db.
Ответить с цитированием
  #8 (permalink)  
Старый 22.11.2018, 19:28
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Хе. Ну, какую в колбеке написать переменную - это без разницы.
Чего они наусложняли в v3.1 - то, что нужно зачем-то ещё и имя базы писать, вот так:
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://xxxxxx:yyyyyy@ds115701.mlab.com:15701/bookexpress';
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
	db.db('bookexpress').collection('aaaa').insertOne({ text: 'A' });
	console.log(err);
	db.close();
});

При этом, если я его не пишу в URL при коннекте - то этой базы, говорит, нету (вторая db - null). Зачем же я его пишу два раза?
Бессмыслица какая-то.

UPD
Хотя, как выясняется, если подключаться к локалхосту - всё выглядит правильно
var url = 'mongodb://localhost:27017';
MongoClient.connect(url, { useNewUrlParser: true }, function() {
	arguments['1'].db('dbdbdb').collection('aaaa').insertOne({ text: 'A' });
	console.log(arguments['0']);
	arguments['1'].close();
});

Let it be

Последний раз редактировалось Audaxviator, 23.11.2018 в 11:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
чистка массива от undefined со смещением Evelate Элементы интерфейса 4 20.07.2017 15:23
Google Chrome: GET http://url/url undefined (undefined) Kirumbik Opera, Safari и др. 0 07.05.2011 23:26
Чем отличается undefined от null hrundel Общие вопросы Javascript 21 01.01.2011 22:06
В всплывающем окне opener равен undefined alerion Events/DOM/Window 0 24.03.2010 21:32