2017-04-16 3 views
0

nicht erstellen Ich verwende Node.js und Express auf Heroku mit dem MongoDB-Addon. Meine Datenbankverbindung funktioniert einwandfrei, und ich kann einige Daten erfolgreich übertragen, aber keine anderen. HierMongoDB Fehler: Kann Eigenschaft '_id' in Zeichenfolge

ist die Datenbankverbindung:

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); 
}); 
}); 

ich erfolgreich meine Twitter-API-Antwort in die Datenbank wie diese schieben kann:

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

('data' ist nur eine JSON Variable)

Aber wenn ich versuche, eine andere JSON-Variable in der gleichen Methode in die Datenbank zu drücken, erhalte ich einen Fehler. Code:

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

Und der Fehler:

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

Irgendwelche Ideen, was ich falsch mache?

Antwort

1

Ich weiß nicht, wo Sie die Variable jsonHash bekommen, aber ich denke, Sie machen hier unnötige JSON-Behandlung. Sie fügen auch die falsche Variable ein, die Sie einfügen möchten objHash das ein gültiges Objekt ist, das eingefügt werden soll, jetzt fügen Sie jsonHash ein, das nur eine Zeichenfolge ist. tut nichts, da Sie den von der Funktion zurückgegebenen JSON nicht speichern. Ich denke du willst so etwas?

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

Vielen Dank! Das hat funktioniert. Ich denke, ich brauchte keine JSON-Behandlung. – sparkhead95

0

jsonHash ist immer noch eine Zeichenfolge. Vielleicht möchten Sie objHash statt ohne JSON.stringify speichern?

Verwandte Themen