Не удалось вставить данные в MongoDB с помощью NodeJS

#node.js #mongodb

Вопрос:

Я создаю api, используя Mongodb и NodeJS в качестве бэкенда.Я создал отдельный файл подключения к базе данных для этого и пытаюсь вставить данные в другой файл после импорта файла базы данных в него.У меня есть connect.js файл в db папке и category.js файл в routes папке. Но я получаю ошибку ниже:

 TypeError: Cannot read property 'db' of undefined
 

Ниже приведен мой код:

connect.js

 const MongoClient = require('mongodb').MongoClient;
const dotEnv = require('dotenv').config();

const url = process.env.URI;

const conn = () => {

    MongoClient.connect(url,{useNewUrlParser:true,useUnifiedTopology:true})
             .then((db) => {

             }).catch((err) => {
                 console.log("error",err);
             });

}

module.exports = conn;
 

category.js

 const express = require('express');
const router = express.Router();
const conn = require('../db/connect');

router.get('/',(req,res) => {

  data = { name:"Digvijay" };

  conn().db("ExpDb").collection("Products").insertOne(data,(err,resp) => {

       if(err){
         console.log("Error",err);
       }
       else{
         console.log("Success");
       }
   });

});

module.exports = router;
 

Кто-нибудь, дайте мне знать, что я делаю не так.

Комментарии:

1. 1.Вы можете использовать npm мангуста в качестве рэпера ORM и установить соединение с базой данных 2. Вам нужно создать модель соответствующей коллекции, затем вы можете использовать эту модель, создав ее экземпляр. npmjs.com/package/mongoose

2. Я использую mongodb драйвер здесь для nodejs, можем ли мы это сделать, используя его, так как я не собираюсь использовать мангуста на данный момент.

Ответ №1:

Я даю все в одном файле. Вы можете разделить их в соответствии с требованиями.

     const MongoClient = require('mongodb').MongoClient;

// Connect to the db
MongoClient.connect("mongodb://localhost:27017/MyDb", function (err, db) {
    data = { name:"Digvijay" };
    db.collection('Products', function (err, collection) {
        
        collection.insert(data);
        
        
        

        db.collection('Products').count(function (err, count) {
            if (err) throw err;
            
            console.log('Total Rows: '   count);
        });
    });
                
});
 

это может помочь решить проблему.
https://docs.mongodb.com/manual/reference/method/db.collection.insert/#mongodb-method-db.collection.insert

проблема совместимости с insertOne:

https://docs.mongodb.com/manual/reference/method/db.collection.insertOne/#mongodb-method-db.collection.insertOne