已经设置了mongodb,mongoose等,但是当我尝试向数据库添加内容时,实际上并没有添加它

时间:2016-02-05 09:48:54

标签: javascript node.js mongodb

我正在使用localhost并正确设置了所有模块,并且我已检查数据库是否存在。当我输入localhost:3000 / pods / add?firstName ='John'时,它应该将它添加到数据库中,但由于某种原因它无法正常工作。

var express = require('express');
var _ = require('underscore');
var mongoose = require('mongoose');
var podStore = require('./lib/pod-handler.js');
var podsLibrary = require('./lib/pods-library.js');
var podList = [];

var mongoPort = 27017;
var app = express();
var port = 3000;
var router = express.Router();
var pods = podsLibrary.list();

mongoose.connect('mongodb://localhost:'+mongoPort+'/pods');

router.route('/').get(function(request, response) {
  //console.log('You hit an empty URL .. :(');
    response.status(503).send("Service Unavailable");
});

router.route('/lib').get(function(request, response) {
  //console.log('You hit an empty URL .. :(');
    response.status(200).send("Cool beans!");
});

router.route('/pods/list').get(function(request, response){
  if(!pods){
    return response.status(503).send("Service Unavailable");
  }
  return response.status(200).send(makeReadableList(pods));

  function makeReadableList(pods){
    var podsHtml = " ";
    _.each(pods, function(value, key){podsHtml = podsHtml + key});
    return podsHtml;
  }
});

router.route('/pods/add').post(function(request, response){
  if (!request.query){
    return response.status(400).send("Please give first name");
  }
  var payload = request.query;
  if (!payload.firstName){
    return response.status(400).send("give name");
  }
  podStore.save({
    firstName: payload.firstName,
    lastName: payload.lastName

  }, function(){
    return response.status(200).send(payload.firstName + " has been added!");
    var space = " ";
    _.each(pods, function(value, key) {
      key + space;
      return space + payload.firstName + payload.secondName;
    });
  });
});


router.route('/pods').get(function(request, response) {
  //console.log("We reached the POD page -- Yay! :D");
  response.status(200).send("Server unavailable");
});


app.use('/', router);
app.listen(port, function () {
    console.log('App listening on port %s', port);
});

我无数次检查了我的代码,我似乎无法找到问题。

这是pod-handler文件。

var PodDoc = require('../models/pods.js');

module.exports = {
  save: save
}

function save(pod, callback){
  var podToSave = new PodDoc();
  podToSave.firstName = pod.firstName;
  podToSave.lastName = pod.lastName;
  /*podToSave.skills = pod.skills;
  podToSave.avatarUrl = pod.avatarUrl;
  podToSave.address = {
    number: pod.address.number,
    lineOne: pod.address.lineOne,
    lineTwo: pod.address.lineTwo,
    postcode: pod.address.postcode
  }
  podToSave.phoneNumbers = {
    mobile: pod.phoneNumbers.mobile,
    landline: pod.phoneNumbers.landline
  }*/
  podToSave.save(function(err){
    if(err){

      console.log(err);
    } else {
      console.log("Working");
      callback();
    }
  })
}

2 个答案:

答案 0 :(得分:0)

在您使用端口300的URL中可能存在拼写错误,其中为localhost配置的端口为3000。 当我输入localhost:300 / pods / add?firstName =' John'

答案 1 :(得分:0)

当我输入localhost:3000 / pods / add?firstName ='John'时,它应该将其添加到数据库中 如果我理解正确,您希望在浏览器中打开此URL,并希望在数据库中记录 John 。 将路由器请求类型更改为GET,此

router.route('/pods/add').post(/*omitted*/);

到这个

router.route('/pods/add').get(/*omitted*/);

服务器期待POST请求,但浏览器无法处理它没有FORM元素或ajax请求,浏览器通常使用GET请求,我的意思是当你打开你的网址时,它会向服务器发送GET请求