Есть проблема, в файле db.js есть такой код:
const mc = require('mongodb').MongoClient;
var db;
function connect(uri) {
var client = new mc(uri, { useNewUrlParser: true, useUnifiedTopology: true });
client.connect(err => {
if (err) return console.error(err);
db = client.db("test").collection("test");
console.log("Connected");
});
}
function insert(data) {
db.insertOne(data, (err) => {
if (err) return console.error(err);
console.log("Inserted " + data);
});
}
module.exports.connect = connect;
module.exports.insert = insert;
Но при запуске из другого файла (
const db = require('./db');
db.connect();
db.insert({testing: true});
)
происходит ошибка: Cannot read property 'insertOne' of undefined
В базу данных ничего не кладётся, код завершается.
Буду рад, если подскажете, где ошибка.
В вашем коде переменная db объявляется всего два раза:
const mc = require('mongodb').MongoClient;
var db;
connect db = client.db("test").collection("test");
console.log("Connected");
Поэтому когда вы вызываете функцию insert , в которой параметр bd не определен, javascript берет его из глобальной области видимости, но там Вы не задали ему какое-либо значение, а проста задекларировали переменную используя var, поэтому значение у нее undefined. Что бы поправить ошибку поместите db = client.db("test").collection("test"); в тело функции insert
Продвижение своими сайтами как стратегия роста и независимости