2017-04-16 82 views
0

我在Heroku上使用Node.js和Express,并使用MongoDB插件。 我的数据库连接工作正常,我可以成功地推入一些数据,但没有其他。MongoDB错误:无法在字符串上创建属性'_id'

这里是数据库连接:

mongodb.MongoClient.connect(mongoURI, function (err, database) { 
if (err) { 
    console.log(err); 
    process.exit(1); 
} 

// Save database object from the callback for reuse. 
db = database; 
console.log("Database connection ready"); 

// Initialize the app. 
var server = app.listen(process.env.PORT || dbport, function() { 
    var port = server.address().port; 
    console.log("App now running on port", port); 
}); 
}); 

我可以成功地把我的Twitter API响应到数据库这样的:

db.collection(TWEETS_COLLECTION).insert(data); 

( '数据' 仅仅是一个JSON变量)

但是,当我尝试在同一个方法中将另一个JSON变量推入数据库时​​,出现错误。代码:

var jsonHash = '{"hashtag":"","popularity":1}'; 
var objHash = JSON.parse(jsonHash); 
objHash.hashtag = req.body.hashtag; 
JSON.stringify(objHash); 
collection(HASHTAG_COLLECTION).insert(jsonHash); 

和错误:

TypeError: Cannot create property '_id' on string '{"hashtag":"myhash","popularity":1}' at Collection.insertMany... ...

任何想法我做错了吗?

回答

1

我不知道你在哪里得到jsonHash变量,但我认为你在这里做了不必要的JSON处理。你也插入错误的变量,你想插入objHash这是一个有效的对象插入,现在你插入jsonHash这只是一个字符串。 JSON.stringify(objHash);没有做任何事情,因为你没有保存从函数返回的JSON。我想你想要这样的东西?

var objHash = { 
     hashtag: "", 
     popularity:1 
}; 
objHash.hashtag = req.body.hashtag; 
collection(HASHTAG_COLLECTION).insert(objHash); 
+0

谢谢!这工作。我想我不需要任何JSON处理。 – sparkhead95

0

jsonHash仍然是一个字符串。可能是您想要保存objHash而不是JSON.stringify

相关问题