我在Heroku上使用Node.js和Express,以及MongoDB插件。 我的数据库连接工作正常,我可以成功地推送一些数据,但不能推送其他数据。
这是数据库连接:
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);
('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:无法在字符串'{“hashtag”上创建属性'_id':“myhash”,“popular”:1}' 在Collection.insertMany ...... ...
任何想法我做错了什么?
答案 0 :(得分:1)
我不知道你从哪里得到jsonHash
变量,但我认为你在这里做了不必要的JSON处理。您还插入了错误的变量,您想要插入objHash
这是一个有效的插入对象,现在您要插入jsonHash
这只是一个字符串。 JSON.stringify(objHash);
没有做任何事情,因为你没有保存从函数返回的JSON。我想你想要这样的东西?
var objHash = {
hashtag: "",
popularity:1
};
objHash.hashtag = req.body.hashtag;
collection(HASHTAG_COLLECTION).insert(objHash);
答案 1 :(得分:0)
jsonHash
仍然是一个字符串。您可能希望在没有objHash
的情况下保存JSON.stringify
吗?