Ну видимо не одно и тоже получается, попробуй сравнить.
MongoDB .find() - не работает
-
Имеем:
- Windwos 10
- BAS премиум 24.6.2
- OpenServer c MongoDB 4.4
код в модуле Node.js
var MongoClient = require("mongodb").MongoClient; var url = "mongodb://localhost:27017/"; var mongoClient = new MongoClient(url); mongoClient.connect(); await(new Promise((resolve, reject) => { var users = [[DATA]] const db = mongoClient.db("t2"); const collection = db.collection("ser"); const result = collection.insertMany(users); resolve() }));выполняется без ошибок, данные импортиуреются в БД
Так же без проблем работают функции, обновлени и удалениякод функции find - не работает
const MongoClient = require("mongodb").MongoClient; const url = "mongodb://localhost:27017/"; const mongoClient = new MongoClient(url); await (new Promise((resolve, reject) => { mongoClient.connect(function (err, client) { const db = client.db("t2"); db.collection("user").findOne(function (err, result) { console.log(result); client.close(); }); }); resolve() }));При этом функция find(), нормально отрабатывает в VSCode - возвращает искомое значение.
В чем ошибка неработающего find()
или есть специфика написания данной функции под версию ноды в БАС ? -
@inotoxic said in MongoDB .find() - не работает:
или есть специфика написания данной функции под версию ноды в БАС ?
Нет, просто вы видимо не знаете как работают promise, resolve надо было добавить в callback функцию. А вообще можно не передавать callback в findOne и тогда вернется promise, который соответственно с await работает, что намного удобней.
-
@inotoxic said in MongoDB .find() - не работает:
@UserTrue с resolve, банальная не внимательность - спасибо
Ранее на эту же ошибку в лс указал господин @Sadzurami - за что ему отдельно спасибо !
В любом случае можно переписать без промиса
Для vscode этот код надо будет обернуть в async функцию
const url = "mongodb://localhost:27017/"; const mongoClient = new MongoClient(url); const client= await mongoClient.connect() const db = client.db("t2"); const result = await db.collection("user").findOne() console.log(result);p.s. код не проверял, писал прямо тут )))