TypeError:无法设置属性' auto'为null

时间:2016-11-30 13:17:34

标签: javascript angularjs node.js mongodb express

我得到'TypeError:无法设置属性' auto'当我尝试使用frnt端的angularjs和后端的nodejs更新我的mongodb时为null。这是我的代码:

我的角度代码:

scope.lol.then(function(user){
  console.log(user[0]._id);
  iden=user[0]._id;
  $scope.userss = user;
  console.log(iden);

  $http.put('/api/updateUser', user[0]);
});

我的api:

module.exports.updateUser = function (req, res) {
  var id = req.param.id;
  User.findById(id, function(err, user) {
    if (err) throw err;

    // change the users location
    user.auto = 'true';

    // save the user
    user.save(function(err) {
      if (err) throw err;

      console.log('User successfully updated!');
    });
  });
}

2 个答案:

答案 0 :(得分:0)

我将假设您正在使用ExpressJS作为您的API,因此您需要使用body-parser来检索您的请求正文。你可以在这里阅读更多相关信息:http://expressjs.com/en/api.html - ctrl + f,以便身体解析器跳到好位:)

在您的API中尝试这样的事情(您可能需要调整它以适合您的应用,但它会向您展示如何从请求的主体中提取内容。链接上有代码示例我也发布了):

var express = require('express');
var bodyParser = require('body-parser');

var app = express();
app.use(bodyParser.urlencoded({ 
  extended: false 
}));

app.use(express.json());
app.use(express.urlencoded());

app.listen(1337);

app.put('/updateUser', updateUser);

function updateUser (req, res) {
  var id = req.body.id;
  User.findById(id, function(err, user) {
    if (err) throw err;

    // change the users location
    user.auto = 'true';

    // save the user
    user.save(function(err) {
      if (err) throw err;

      console.log('User successfully updated!');
    });
  });
}

希望有所帮助!

答案 1 :(得分:0)

$http.put('/api/updateUser', user[0]);

更改为

$http.put('/api/updateUser', {params:{id:user[0]._id}});

和api

var id = req.param.id;

更改为

var id = req.query.id;