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 работает, что намного удобней.

  • @UserTrue с resolve, банальная не внимательность - спасибо

    Ранее на эту же ошибку в лс указал господин @Sadzurami - за что ему отдельно спасибо !

  • @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. код не проверял, писал прямо тут )))

  • 0 Votes
    7 Posts
    756 Views
  • 0 Votes
    16 Posts
    1161 Views
  • 0 Votes
    14 Posts
    1349 Views
  • 0 Votes
    5 Posts
    750 Views
  • 0 Votes
    4 Posts
    1056 Views