Ich habe die folgenden Schemas. Wenn ich versuche, einen neuen user
zu registrieren, ersetzt mongodb den Namen des letzten registrierten Benutzers durch den neuen. ObjectId bleibt für diesen Eintrag gleich. Hab keine Ahnung, warum das so ist. Keine Fehler.express mongoose Mongodb nicht richtig einstecken
I console.log
ed überall in der Post api und alles ist gut. Der Eintrag wird in der Datenbank angezeigt, ersetzt diesen jedoch. Könnte das Problem mein Schemadesign sein? Etwas sagt mir, dass es so ist, wie ich in den Schemadefinitionen alles String
mache. Ich baue mit MEAN.
var AnswerSchema = Schema({
response : { type: String, default:null},
question : { type: String, ref: 'Question'},
employee : { type: String, ref: 'User'}
})
var QuestionSchema = Schema({
title : String,
});
var UserSchema = Schema({
username : String,
});
module.exports = mongoose.model('Answer', AnswerSchema);
module.exports = mongoose.model('Question', QuestionSchema);
module.exports = mongoose.model('User', UserSchema);
api
var Question = require('../models/questions');
var User = require('../models/users');
var Answer = require('../models/answers');
var jwt = require('jsonwebtoken');
var secret = "markov";
var user = new User();
var question = new Question();
var answer = new Answer();
// Export routes to the main server.js file
module.exports = function(router) {
/* ====================
User Registration Route
==================== */
router.post('/users', function(req, res) {
user.username = req.body.username;
if (req.body.username == null) {
res.json({ success: false, message: 'Ensure username is provided' });
} else {
// If criteria is met, save user to database
user.save(function(err) {
console.log(user.username);
if (err) {
res.json({ success: false, message: 'Username already exists!' });
} else {
res.json({ success: true, message: 'user created!' }); // If all criteria met, save user
}
});
}
});
'user.username' sieht sehr verdächtig. Wo wird die Instanz erstellt? Es ist sicherlich nicht im Bereich der '.post()' hier. Irgendwo rufen Sie 'var user = new User()' und diese Instanz bleibt herum. Die Informationen bleiben also genau so, wie du es beschreibst. Zeigen Sie den Code an, wo Sie den Anruf tatsächlich tätigen. Aber eigentlich solltest du einfach 'new User()' in diesem Bereich aufrufen. –
Ich habe den Code hinzugefügt. Ich rufe 'var user = new User()' oben auf. –
Also tu das nicht. Rufen Sie 'new User()' "innerhalb" der '.post()' und alle anderen Request-Methoden im selben Modul auf. Dies ist nicht wie "Importe". Sie deklarieren eine Variable und der Umfang ist wichtig. Sie wollen also ein "neues" mit jeder Anfrage. Dann wirst du das Problem nicht haben. –