2016-03-02 3 views
0
router.get('/wiki/:topicname', function(req, res, next) { 
    var topicname = req.params.topicname; 
    console.log(topicname); 




    summary.wikitext(topicname, function(err, result) { 
      if (err) { 
       return res.send(err); 
      } 
      if (!result) { 
       return res.send('No article found'); 
      } 
      $ = cheerio.load(result); 

      var db = req.db; 
      var collection = db.get('try1'); 
      collection.insert({ "topicname" : topicname, "content": result }, function (err, doc){ 
       if (err) { 
        // If it failed, return error 
        res.send("There was a problem adding the information to the database."); 
       } 
       else { 
        // And forward to success page 
        res.send("Added succesfully"); 
       } 
      }); 

     }); 

Используя этот код, я пытаюсь добавить сгружен контент из Википедии и коллекций try1. Отобразится сообщение «Добавлено успешно». Но коллекция кажется пустой. Данных в базу данных не добавленоНевозможно ввести данные в базе данных Монго в экспрессе

+0

Что происходит, когда вы' console.log' в документ из вставки? –

+0

Правильно отображает содержимое – Deesha

+0

В обратном вызове внутри 'collection.insert' проверьте наличие' doc' 'if (doc) { console.log (" DOC: "+ JSON .stringify (doc)); } ' –

ответ

0

Запустите свой сервер mongod правильным путем, то есть тем же самым путем, что и вы, чтобы проверить содержимое коллекции.

sudo mongod --dbpath <actual-path>

+0

Большое вам спасибо. Мой сервер mongod работал в разных каталогах. – Deesha

1

Данные должны быть там, MongoDB есть {ш: 1, J: истинный} писать варианты касаются по умолчанию, поэтому его только возвращает без ошибки, если документ действительно вставлен, есть ли документ вставить.

Вещи, которые вы должны рассмотреть следующие вопросы:

-У НЕ использовать функцию вставки, ее depricated использование insertOne, insertMany или bulkWrite. ref .: http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html#insert

-Обратный вызов метода вставки имеет два параметра. Ошибка при возникновении ошибки и результата. Объект результата имеет несколько свойств, которые могут быть использованы для после тестирования результатов вставки, например: result.insertedCount вернет количество вставленных документов.

Таким образом, в соответствии с этим кодом вы проверяете только ошибку, но можете вставлять нулевые документы без ошибок.

Также неясно, откуда вы берете свое имя базы данных. Правильно ли в вашем коде? Вы уверены, что подключены к базе данных, которую хотите использовать?

var db = req.db; 

Также вы не должны заключать свои имена свойств с "в методе вставки Вставка должен выглядеть следующим образом:.

col.insertOne({topicname : topicname, content: result}, function(err, r) { 
    if (err){ 
     console.log(err); 
    } else { 
     console.log(r.insertedCount); 
    } 
});