в Connection.js
const mongoClient=require('mongodb').MongoClient
const state = {
db:null
}
module.exports.connect=function (done){
const url='mongodb://localhost:27017/'
const dbname='shopping'
mongoClient.connect(url,(err,data)=>{
if (err) return done(err)
state.db=data.db(dbname)
})
done()
}
module.exports.get=()=>state.db
в помощниках по продуктам
var db=require('../config/connection')
module.exports = {
addProduct:(product,callback)=>{
console.info(product)
db.get().collection('product').insertOne(product).then((data)=>{
console.info(data);
callback(true)
})
}
}
Я не могу найти, в чем ошибка. Я новичок в nodejs.
Я пытался отправить форму, но не получилось. Как я могу это исправить.
@Шахун, я опубликовал свой ответ. Пожалуйста, проверьте и дайте мне знать, если у вас возникнут вопросы относительно проблемы, с которой вы столкнулись.
В файле Connection.js вы вызываете функцию Done() до того, как будет установлено соединение с базой данных. Вам необходимо переместить функцию Done() внутри обратного вызова mongoClient.connect(), чтобы гарантировать, что она вызывается только после успешного установления соединения.
const state = {
db: null
};
module.exports.connect = function (done) {
const url = 'mongodb://localhost:27017/';
const dbname = 'shopping';
mongoClient.connect(url, (err, client) => {
if (err) return done(err);
state.db = client.db(dbname);
done();
});
};
module.exports.get = () => state.db;`
При использовании этой базы данных соединение не осуществляется. Также показывает ту же ошибку.
Вы не можете использовать module.exports
для экспорта нескольких частей (т. е. функции, объекта, свойств) из одного и того же модуля. Вам следует использовать только ключевое слово exports
для экспорта более одного свойства из одного модуля.
Я ответил на тот же вопрос здесь, на этой платформе, где подробно описал, как создать соединение с database
и получить DB-name
с помощью mongodb
драйвера.
Вы также получите кристально ясное представление о том, как импортировать модуль, чтобы получить экземпляр database
в вашем модуле «Другие».
Пожалуйста, проверьте ссылку ниже. Я уверен, что вы получите там ответ.
Приложение Node.js Express не регистрирует состояние подключения MongoDB
Этот работал отлично. Спасибо.
Добро пожаловать. Рада помочь.
db.get().collection('product')
— единственное место в показанном коде, где вы пытаетесь получить доступ к свойству или методуcollection
, что означает, чтоdb.get()
вернул не то, что вы ожидали, а только ноль.