Ich benutze Node.js, Express und MethodOverride zu versuchen und haben ein Formular Update nur 1 Teil eines Modells (mein Benutzermodell).MethodOverride PUT funktioniert nicht
User-Modell:
var userSchema = new mongoose.Schema({
email: { type: String, unique: true, lowercase: true },
password: String,
profile: {
name: { type: String, default: 'Company Name' },
location: { type: String, default: 'Location' },
website: { type: String, default: 'Your Website' },
picture: { type: String, default: '' }
},
assetNumPre: { type: String, default: 'test' }, // this is the one I want to change
});
module.exports = mongoose.model('User', userSchema);
HTML-Formular:
<form role="form-inline"action="/dashboard/settings/assetNumber?_method=PUT" method="POST">
<div class="col-md-3">
<div class="form-group">
<label for="prefix" class="control-label">Prefix for Asset Number</label>
<br>
<small>Any alphanumeric characters to a limit of 6</small>
<input type="text" class="form-control" id="prefix" name="prefix" placeholder="Prefix max 6 characters" maxlength="6" value="{{ prefix }}">
</div><!-- Prefix for Asset Number-->
<br>
<div class="box-footer">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
Dann Route:
app.put('/dashboard/settings/assetNumber',
setRender('dashboard/settings/assetNumbers'),
setRedirect({auth: '/login'}),
isAuthenticated,
dashboard.getDefault,
(req, res) => {
var prefix = req.body.prefix;
console.log(req.params);
User.findByIdAndUpdate({_id: req.params.user_id}, prefix, function(err, UpdatedUser) {
if (err) {
res.send(err);
}
console.log(UpdatedUser);
});
res.locals.prefix = req.user.assetNumPre;
});
Eine Sache, meine Strecke fehlt ist req.user.assetNumPre
das ist, wo ich brauche, es zu retten aber ich habe keine Ahnung wie man das macht PUT
Anfrage. Docs helfen auch nicht viel.
Ich habe die Route von einem Stack Overflow Beispiel vor ein paar Tagen und kann nicht den Link zu finden. Meine app.js hatte eine Methodenüberschreibung, weil ich bereits DELETE
Anfragen bearbeitet habe. Das Modell hat das richtige Feld und einen Standard-Testwert, der auf meiner Show-Seite angezeigt wird.
Was bedeutet "nicht funktioniert"? –
@AndyRay es wurde nicht aktualisiert, ich denke, ich hätte das sagen sollen. Ich habe nicht daran gedacht, es zu tun, da es 'findbyidandupdate' ist. – Kirbytech