2016-02-11 4 views
1

Сейчас я пишу данные в файл json и возвращаю их обратно на страницу html. Теперь я хочу сделать то же самое с mongodb Database. Я что-то пробовал, но он не работает.Я хочу записать данные в базу данных mongodb, используя node.js

app.get('/', function(req, res){ 
url = 'http://www.amazon.in/Sony-Xperia-Z3-Copper-32GB/dp/B010V448ZC/ref=pd_rhf_se_s_cp_6?ie=UTF8&dpID=419rmomR%2BjL&dpSrc=sims&preST=_SL500_SR135%2C135_&refRID=19RT23W7T48Z99XNT6GK'; 

request(url, function(error, response, html){ 
    if (!error) { 
     var $ = cheerio.load(html) 
     var json = {Product_Name : "", Brand : "", Color : "", Image : "", Price : "", Rating : ""}; 

     var P_name = $('#title').children().text(); 
     var brand = $('#brand').text(); 
     var color = $('.a-row').find('span.selection').text(); 
     var price = $('#price').find('span.a-size-medium').text(); 
     var rating = $('#averageCustomerReviews').find('span.a-icon-alt').text(); 
     var image = $('.imgTagWrapper').children().attr('src'); 

     /*json.Product_Name = P_name; 
     json.Brand = brand.trim(); 
     json.Color = color.trim(); 
     json.Price = price.trim(); 
     json.Rating = rating.trim(); 
     json.Image = image.trim(); 

     fs.writeFile('output.json', JSON.stringify(json, null, 4), function(err){ 
      console.log('File successfully written! - Check your project directory for the output.json file'); 
     })*/ 


     var insertDocument = function(db, callback) { 
      db.collection('proInfo').insertOne({ 

       "Product_Name": P_name, 
       "Brand":brand, 
       "Color":color, 
       "Price":price, 
       "Rating":rating, 
       "Image":image 

      }, function(err, result) { 
       assert.equal(err, null); 
       console.log("Inserted a document into the proInfo collection."); 
       callback(result); 
      }); 
     }; 

     MongoClient.connect(url, function(err, db) { 
      assert.equal(null, err); 
      insertDocument(db, function() { 
       db.close(); 
      }); 
     }); 

     res.send('Check your console!') 
    } else { 
     console.log("We’ve encountered an error: " + error); 
    } 
}) 
}) 

Он показывает некоторые ошибки в console.log

D: \ Hemanth \ Узел Js \ веб-скребок \ node_modules \ MongoDB \ Lib \ url_parser.js: 20 певд Error ('недействителен схемы, ожидаемый mongodb '); ^

Ошибка: недопустимая схема, как ожидается MongoDB на module.exports

Может кто-нибудь помочь мне решить эту проблему?

+0

Не уверен, что 'url' предназначается, чтобы быть в вашей компании (кажется, указывает на веб-странице), но, как указано в MongoClient для подключения, вам необходимо следовать формату здесь: [Формат URI-файла соединения] (https://docs.mongodb.org/manual/reference/connection-string/). Это означает указать ваш экземпляр сервера MongoDB и имя базы данных. Также потратьте еще немного времени на чтение [документации драйвера] (http://mongodb.github.io/node-mongodb-native/2.1/api/), так как ваши концепции еще не совсем там. –

+0

url ссылается на другую веб-страницу, используя то, что я извлек информацию и сохранил ее в переменной. Я написал эту информацию в json-файл успешно, но теперь я хочу записать их в базу данных. –

+0

Дело в том, что вы используете это как строку соединения с MongoClient, когда вам этого не нужно. Это и есть ваша ошибка. –

ответ

-1

Initialize Mongoose и схемы

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://YOURVALUES.mongolab.com:11111/NAME'); 
var schema = new mongoose.Schema({ name: 'string', account: 'string', date: 'string' }); 
var accountz = mongoose.model('accountz', schema); 

Создать

var small = new accountz({ 
    name: "SAMZ", 
    account: "Monthly", 
    date: "29/12/2015" 
}); 
small.save(function (err) { 
    if (err){ 
     console.log("Error in Save"); 
    }else{ 
     console.log("Save Sucessfully"); 
    } 
}); 

Read

accountz.find().exec(function(err, data){ 
    if (err){ 
     console.log("Error in Reading"); 
    }else{ 
     console.log("The value = " + data); 
    } 
}); 

Update

accountz.findOne({ "_id": "0023"}, function (err, doc){ 
    doc.name = editObj.name; 
    doc.account = editObj.account; 
    doc.date = editObj.date; 
    doc.save(function (err) { 
     if (err){ 
      console.log("Error in Updating"); 
     }else{ 
      console.log("Updated Sucessfully"); 
     } 
    }); 
}); 

Удалить

accountz.remove({ "_id": "0023"}).exec(function(err, data){ 
    if (err){ 
     console.log("Error in Deleting"); 
    }else{ 
     console.log("Deleting Sucessfully"); 
    } 
}); 

Ref Эта ссылка https://shiyamexperience.wordpress.com/2015/12/29/mongodb-crud-using-mongoose/

+1

Не просто ссылки; они умирают. Вместо этого включите здесь некоторую информацию. –

+0

Теперь он обновляется –

+0

Теперь это может включать в себя контент из ссылки, а не только ссылку, но также не дает прямого ответа на вопрос.Не сказать, что OP не мог сделать с хорошим учебником, но несколько коротких примеров ответа не делают. –

0

Использование экспорта модуля в ваш узел маршрутов и расслоение плотной определить метод внутри module.export, как указано ниже:

module.export {}

, а затем вызвать метод, применять маршруты в server.js при применении узла:

erc(app, 
    { 
     controllers: __dirname + '/routes', 
     routes:{'/methodnametobecalled': { action: 'routesfilename#methodname'} 
    } 
}); 
+0

Я решил эту проблему, это было просто. В файле node.js у меня была две переменные url, которые были проблемой, и я изменил одно имя переменной, после чего получил решение. –

Смежные вопросы