пн goose создание нулевого документа после использования модуля экспорта в express - PullRequest
0 голосов
/ 28 марта 2020

Я недавно использовал функцию для успешной загрузки файлов в базу данных mongodb. Однако после перемещения этих функций в файл (для очистки) и экспорта этого файла, который затем потребовал его в моем маршруте, база данных теперь создает документы только с нулевыми значениями, например:

_id:ObjectId("xxxxxxxxxxxxxxx")
name:null,
value:null,
image:null,
desc:null

Я не знаю что может быть причиной этого, я записываю объект аргумента, который я пытаюсь вставить изнутри функции 'insertProducts', и item.name не является нулевым. Извините, я новичок в mongodb: / может быть, кто-то может указать мне правильное направление?

CRUD. js


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


const removeProducts = function(req,res){
    MongoClient.connect('mongodb://localhost', (err, client) => {
      if (err) {
        throw err;
      }
      let db = client.db('account-app');
      let products = db.collection('products');
      let users = db.collection('users');

      try{
        products.remove({ _id: req.body.id }, function(err) {
          if (!err) {
                  console.log('removed item')
          }
      });
      }
      catch(err){
        console.log('Error while inserting', err)
      }
      client.close()
      res.redirect('/addItems')

    })
  }


  const insertProducts = function(item,res){

    console.log("item name",item.name)
    MongoClient.connect('mongodb://localhost', (err, client) => {
      if (err) {
        throw err;
      }
      let db = client.db('account-app');
      let products = db.collection('products');

      try{
        products.insertOne(item)
        console.log('item inserted')
      }
      catch(err){
        console.log('Error while inserting', err)
      }
      client.close()
      res.redirect('/admin/addItems')

    })
  }

  module.exports={removeProducts: removeProducts, insertProducts: insertProducts}

мой админ-маршрут, требующий функции crud

const crudOps = require('../utils/admin/CRUD') //require CRUD functions

// Adding new items
// --------------------------------------------------
router.post('/addNewItems', (req, res, next) => {
console.log(req.body.name)

let item = {
  name:req.body.name,
  file: binary(req.files.image.data),
  value: req.body.value,
  desc: req.body.desc
}

crudOps.insertProducts(item, res)
});

1 Ответ

0 голосов
/ 28 марта 2020

URL-адрес соединения выглядит неправильно. Обычно он имеет формат:

mongodb: // localhost: 27017 / mydatabase

Попробуйте заменить строку подключения на соответствующую для вашей базы данных и посмотрите, работает. Кроме того, в документах обычно есть insertOne заявления вроде этого, так что, может быть, в этом проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...