Note that there are some explanatory texts on larger screens.

plurals
  1. POcannot get PUT to work on Nodejs / express
    primarykey
    data
    text
    <p>I've been writing my first node app, a rest api. I've got everything working pretty good but the PUT won't ever go through. I've tried lots of different combinations, lots of older tutorials and some new ones, and i'm probably pretty close I'm just not sure exactly how to update the record. Also, if you see anything that jumps out at you please feel free to let me know! I'm really liking node so I'd love to learn best practices.</p> <p>Below is the route to my table, all of the other endpoints are working fine. let me know if you have any questions.</p> <pre><code>//Database var mongoose = require("mongoose"); mongoose.connect('mongodb://Shans-MacBook-Pro.local/lantern/'); // Schema var Schema = mongoose.Schema; var Person = new Schema({ first_name: String, last_name: String, address: { unit: Number, address: String, zipcode: String, city: String, region: String, country: String }, image: String, job_title: String, created_at: { type: Date, default: Date.now }, active_until: { type: Date, default: null }, hourly_wage: Number, store_id: Number, employee_number: Number }); var PersonModel = mongoose.model('Person', Person); // Return all people exports.allPeople = function(req, res){ return PersonModel.find(function (err, person) { if (!err) { return res.send(person); } else { return res.send(err); } }); } // Create A Person exports.createPerson = function(req, res){ var person = new PersonModel({ first_name: req.body.first_name, last_name: req.body.last_name, address: { unit: req.body.address.unit, address: req.body.address.address, zipcode: req.body.address.zipcode, city: req.body.address.city, region: req.body.address.region, country: req.body.address.country }, image: req.body.image, job_title: req.body.job_title, hourly_wage: req.body.hourly_wage, store_id: req.body.location, employee_number: req.body.employee_number }); person.save(function (err) { if (!err) { return console.log("created"); } else { return res.send(err); } }); return res.send(person); } // Return person by id exports.personById = function (req, res){ return PersonModel.findById(req.params.id, function (err, person) { if (!err) { return res.send(person); } else { return res.send(err); } }); } // Delete a person by id exports.deletePerson = function (req, res){ return PersonModel.findById(req.params.id, function (err, person) { return person.remove(function (err) { if (!err) { console.log("removed"); } else { return res.send(err); } }); }); } // Update a person by id exports.updatePerson = function(req, res){ var person = new PersonModel({ first_name: req.body.first_name }); var upsertData = person.toObject(); console.log(req.params.id); // OK delete upsertData.id; person.update({ _id: req.params.id }, upsertData, { multi: false }, function(err) { if(err) { throw err; } console.log('updated visit: '+ req.params.id); res.redirect('/'); }); } </code></pre> <p>My app.js</p> <pre><code>// Node Modules var express = require('express'); var app = express(); app.port = 3000; // Routes var people = require('./routes/people'); // Node Configure app.configure(function(){ app.use(express.bodyParser()); app.use(app.router); }); // Start the server on port 3000 app.listen(app.port); /********* ENDPOINTS *********/ // People app.get('/people', people.allPeople); // Return all people app.get('/people/:id', people.personById); // Return person by id app.post('/people', people.createPerson); // Create A Person app.put('/people/:id', people.updatePerson); // Update a person by id, not working app.delete('/people/:id', people.deletePerson); // Delete a person by id // Logs // - Build some logs here for info when the server is going. // - routes that are loaded, any activity that might be helpful console.log('Server started on port ' + app.port); </code></pre> <p>lastly, the json error on put</p> <pre><code>{ "name": "MongoError", "err": "Mod on _id not allowed", "code": 10148, "n": 0, "connectionId": 91, "ok": 1 } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload