[英]Trouble inserting array of documents into a database in mongodb via node js script
I'm new to node js and mongodb. 我是Node js和mongodb的新手。 Just testing out some ideas so I am trying to create a web scraper that adds data to a database in mongodb. 只是测试一些想法,所以我试图创建一个Web刮板,将数据添加到mongodb中的数据库。 I have a script that connects to mongodb and dynamically adds data to the database through a node js script. 我有一个脚本连接到mongodb,并通过节点js脚本动态将数据添加到数据库。 I run this script in the console like so: 'node scrapeData.js' The script runs without any errors, but when I fire up the mongo shell and run db.posts.find(), I get 0 records. 我在控制台中这样运行该脚本:'node scrapeData.js'该脚本运行无任何错误,但是当我启动mongo shell并运行db.posts.find()时,我得到了0条记录。 I know that my script is scraping the data successfully as it's logging the array of data in the console. 我知道我的脚本在控制台中记录数据数组时正在成功抓取数据。 Not sure where I'm going wrong. 不知道我要去哪里错了。 Here's my script: 这是我的脚本:
var MongoClient = require('mongodb').MongoClient;
//requiring the module so we can access them later on
var request = require("request");
var cheerio = require("cheerio");
MongoClient.connect('mongodb://127.0.0.1:27017/mydb', function (err, db) {
if (err) {
throw err;
}
else {
console.log("successfully connected to the database");
//define url to download
var url = "http://www.nyxcosmetics.ca/en_CA/highlight-contour";
var prodList = [];
var priceList = [];
var products = [];
request(url, function(error, response, body) {
if(!error) {
//load page into cheerio
var $ = cheerio.load(body);
$(".product_tile_wrapper").each(function(i, elem) {
prodList[i] = $(this).find($(".product_name")).attr("title");
priceList[i] = $(this).find($(".product_price")).attr("data-pricevalue");
});
prodList.join(', ');
for(var i = 0; i < prodList.length; i++) {
var prod = {
name: prodList[i],
price: priceList[i]
};
products.push(prod);
}
console.log(products); //print the array of scraped data
//insert the prods into the database
//in the 'posts' collection
var collection = db.collection('posts');
collection.insert(products);
console.log("products inserted into posts collection");
//Locate all the entries using find
collection.find().toArray(function(err, results) {
console.log(results);
});
} else {
console.log("We've encountered an error!")
}
});
}
db.close();
});
Just a few hints: 只是一些提示:
db.collection.insert()
is actually deprecated in favor of more verbose .insertOne()
and .insertMany()
在2.x驱动程序版本中,实际上不建议使用db.collection.insert()
,而是使用更详细的.insertOne()
和.insertMany()
collection.insert(products, function(error,result) { console.log(error); console.log(result); })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.