类型错误: 无法在字符串上创建属性"_id"...即使在使用 JSON 之后。解析??(MongoDB /Node.js / Twitter API)



编辑 - 顺便说一句,我正在尝试将 100 条推文插入 MongoDB 数据库。

我正在尝试将推文的文本(使用Twitter API(插入MongoDB数据库,即使在解析后我也得到了TypeError: Cannot create property _id on string。我敢打赌,这可能是一个容易解决的愚蠢错误。我的代码如下:

编辑 2 - 我编辑了代码以获得我仍然遇到的相同错误。

var Twitter = require('twitter');
var fs = require("fs");
var request = require("request");
var client = new Twitter({
consumer_key: ' ',
consumer_secret: ' ',
access_token_key: ' ',
access_token_secret: ' '});
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/mydb";
var parser = { useNewUrlParser: true };
MongoClient.connect(url, parser, function(err, db) {
if (err) throw err;
console.log("Database created!");
var dbo = db.db("mydb");
dbo.createCollection("datos_sentimiento", function(err, res) {
if (err) throw err;
console.log("Collection created!");
db.close();
});
});
MongoClient.connect(url, parser, function(err, db) {
if (err) throw err;
var dbo = db.db("mydb");
var cont = 0;
var params = {q: '@Avengers', count: 100, include_rts: 0, tweet_mode: 'extended', retweeted_status: 'extended'};
client.get('search/tweets', params, function(error, tweets, response) {
if (!error) {
//console.log(tweets);
for(var i=0; i < params.count; i++){
if(tweets.retweeted_status){
tweets = tweets.retweeted_status;
var tweet = (JSON.stringify(tweets.statuses[i])+"n");
var string = tweet.replace(/[&/\#,+()$~%.'":*?<>{}]/g, '');
console.log('hi');
}
else{
//console.log('hi2');
}
var tweet = (JSON.stringify(tweets.statuses[i].full_text));
var string = tweet.replace(/[&/\#,+()$~%.'":*?<>{}]/g, '');
var string2 = (JSON.stringify(string)+"n");
fs.appendFile("tweet.txt", string2, function (err) {
if (err) throw err;
//console.log('Saved!');
}); 
/*console.log(cont);
cont++;*/
var myobj = JSON.parse(string2);
console.log("hi "+myobj);
dbo.collection("datos_sentimiento").insertOne(myobj, function(err, res) {
if (err) throw err;
console.log("1 document inserted");
db.close();
});
//console.log(i+'fdfdfdfdf');
}
}
});
}); 

该错误显示以下消息:

TypeError: Cannot create property '_id' on string 'RT @RobertDowneyJr Brace yourselves @Avengers InfinityWar hits the interwebs today httpstcoqvBQ3W8jvc'

变量myobj在上面的情况下是字符串,所以,请像这样{myobj}反对:

上一篇:dbo.collection("datos_sentimiento").insertOne(myobj, function(err, res) {

修改为 :dbo.collection("datos_sentimiento").insertOne({myobj}, function(err, res) {

我找到了解决方案。MongoDB需要(必须有!(有一个文档(例如文本= {screen_name:名称,文本:文本}(。我的更正如下:

var text = JSON.parse(string2);
var myobj = {texto: text};
console.log("hi "+text);
dbo.collection("datos_sentimiento").insertOne(myobj, function(err, res) {
if (err) throw err;
console.log("1 document inserted");
db.close();
});

最新更新