2016-11-30 93 views
1

我得到TypeError:當我嘗試更新我的mongodb使用frnt端上的angularjs和後端上的nodejs時,無法設置null的屬性'auto'。這裏是我的代碼:TypeError:無法設置屬性'自動'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

錯誤意味着,在語句'user.auto = '真';變量'user'包含'null'。 – Pointy

+0

顯然,'User.findById'沒有爲傳入的'id'找到'User'。 – Cerbrus

+0

而不是'req.param.id'嘗試'JSON.parse(req.body).id' – dan

回答

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; 
+1

他想要一個帶有正文的PUT請求 - 你的答案只是作爲查詢參數加以解決。下一次他想要讀取終端中請求的主體時,他會遇到完全相同的問題。 –

0

我會假設你使用ExpressJS您的API,讓你」您需要使用body-parser來檢索請求的正文。你可以在這裏閱讀更多關於它的信息:http://expressjs.com/en/api.html - ctrl + f爲body-parser跳轉到好位:)

在你的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!'); 
    }); 
    }); 
} 

希望幫助!

相關問題