2017-04-16 85 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

相關問題