Показать сообщение отдельно
  #1 (permalink)  
Старый 11.03.2021, 11:20
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,706

Mongodb, Node. Как узнать, что коллекции нет?
Пытаюсь сваять что то на node и mongo.
Спецом не являюсь ни в том, ни в другом.
Поэтому сразу куча затык.
Нужно определить есть коллекция в базе или нет. Потому, что когды пытаюсь удалить несуществующую, вылетают ошибки. А как определить, что ее нет

Такой код (последовательность действий)
let client, database, col;

	client = new MongoClient(url);
	await client.connect();
	database = client.db(names.database)
	col = database.collection('docs');
	await col.insertOne(doc);  // создаю коллекцию и записываю документ
	await client.close();
// ............
// Смотрю в компасе. Коллекция есть, документ есть
// .............
	client = new MongoClient(url);
	await client.connect();
	database = client.db(names.database)
	await database.dropCollection('docs')   // Удаляю коллекцию
	await client.close();
// ............
// Смотрю в компасе. Коллекции нет
// ............
	client = new MongoClient(url);
	await client.connect();
	database = client.db(names.database)
	col = database.collection('docs');
	console.log(col)    // чего то возвращает
	if (col) {
		database.dropCollection('docs')  //Выдает ошибку 'NamespaceNotFound' типа нет такой коллекции.
	}
	await client.close();


Весь вопрос в строках 23-25. Почему, хотя коллекции нет database.collection('docs') что то возвращает. И как тогда определить, что ее нет?

Последний раз редактировалось voraa, 11.03.2021 в 11:25.
Ответить с цитированием