MongoDB错误:无法在字符串

时间:2017-04-16 17:40:14

标签: javascript json mongodb insert

我在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 ......   ...

任何想法我做错了什么?

2 个答案:

答案 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吗?