tellux_
tellux_

Reputation: 21

Cannot POST to CosmosDB using Angular

I am trying to post to my cosmosDB using Angular. I can GET just fine, but POST returns with a 404 error in Postman. I am new to routes and APIs so I am a little lost on what is causing the issue.

Here is my index.js

const bodyParser = require('body-parser');
const path = require('path');
const routes = require('./routes');

const root = './';
const port = process.env.PORT || '3000';
const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(root, 'dist/checkin')));
app.use('/api', routes);
app.get('*', (req, res) => {
  res.sendFile('dist/checkin/index.html', {root});
});

app.listen(port, () => console.log(`API running on localhost:${port}`));

My routes.js

const contactService = require('./contact.service');
const router = express.Router();

router.get('/contacts', (req, res) => {
   contactService.getContacts(req, res);
});

router.post('/contact/', (req, res) => {
   contactService.postContact(req, res);
});

module.exports=router;

My contact.service.js which contains all of my operations (Just GET and POST right now)

const ReadPreference = require('mongodb').ReadPreference;

require('./mongo').connect();

function getContacts(req, res) {
  const docquery = Contact.find({}).read(ReadPreference.NEAREST);
  docquery
    .exec()
    .then(contacts => {
      res.status(200).json(contacts);
    })
    .catch(error => {
      res.status(500).send(error);
      return;
    });
}

function postContact(req, res) {
    const originalContact = { uid: req.body.uid, name: req.body.name, description: req.body.description };
    const contact = new Contact(originalContact);
    contact.save(error => {
      if (checkServerError(res, error)) return;
      res.status(201).json(contact);
      console.log('Contact created successfully!');
    });
  }

  function checkServerError(res, error) {
    if (error) {
      res.status(500).send(error);
      return error;
    }
  }

module.exports = {
  getContacts,
  postContact
};

Input is obtained through an HTML forum which is picked up and sent through

    return this.http.post<Contact>(`${api}/contact/`, contact);
  }

Upvotes: 1

Views: 29

Answers (0)

Related Questions