Javascript TypeError:无法读取属性';类别';空的
我的后端终端返回Javascript TypeError:无法读取属性';类别';空的,javascript,node.js,api,next.js,Javascript,Node.js,Api,Next.js,我的后端终端返回null和TypeError:无法读取null的属性“categories”,我的代码缺少什么?它还在我的控制台上返回null。在我的控制器上记录(用户) 这是我的功能: function addCategory(e) { e.preventDefault(); fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/users`, { method: 'POST', headers: {
null
和TypeError:无法读取null
的属性“categories”,我的代码缺少什么?它还在我的控制台上返回null
。在我的控制器上记录(用户)
这是我的功能:
function addCategory(e) {
e.preventDefault();
fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/users`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${localStorage.getItem('token')}`
},
body: JSON.stringify({
name: name,
description: description,
type: type,
amount: amount
})
})
.then(res => {
return res.json()
})
.then(data => {
if (data === true){
Swal.fire({
title: "Category added!",
icon: "success",
})
Router.push('/category')
} else {
Router.push('/errors/1')
}
})
}
router.post('/', auth.verify, (req, res) => {
const user = auth.decode(req.headers.authorization)
CategoryController.addCategory(req.body)
.then(result => res.send(result))
})
module.exports.addCategory = (params) => {
return User.findById(params.userId)
.then((user, err) => {
console.log(user)
if(err) return false
user.categories.push(params)
return user.save()
.then((updatedUser, err) => {
return err ? false : true
})
.catch(err => {
console.log(err)
})
})
.catch(err => {
console.log(err)
})
}
这是我的路线:
function addCategory(e) {
e.preventDefault();
fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/users`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${localStorage.getItem('token')}`
},
body: JSON.stringify({
name: name,
description: description,
type: type,
amount: amount
})
})
.then(res => {
return res.json()
})
.then(data => {
if (data === true){
Swal.fire({
title: "Category added!",
icon: "success",
})
Router.push('/category')
} else {
Router.push('/errors/1')
}
})
}
router.post('/', auth.verify, (req, res) => {
const user = auth.decode(req.headers.authorization)
CategoryController.addCategory(req.body)
.then(result => res.send(result))
})
module.exports.addCategory = (params) => {
return User.findById(params.userId)
.then((user, err) => {
console.log(user)
if(err) return false
user.categories.push(params)
return user.save()
.then((updatedUser, err) => {
return err ? false : true
})
.catch(err => {
console.log(err)
})
})
.catch(err => {
console.log(err)
})
}
这是我的控制器:
function addCategory(e) {
e.preventDefault();
fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/users`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${localStorage.getItem('token')}`
},
body: JSON.stringify({
name: name,
description: description,
type: type,
amount: amount
})
})
.then(res => {
return res.json()
})
.then(data => {
if (data === true){
Swal.fire({
title: "Category added!",
icon: "success",
})
Router.push('/category')
} else {
Router.push('/errors/1')
}
})
}
router.post('/', auth.verify, (req, res) => {
const user = auth.decode(req.headers.authorization)
CategoryController.addCategory(req.body)
.then(result => res.send(result))
})
module.exports.addCategory = (params) => {
return User.findById(params.userId)
.then((user, err) => {
console.log(user)
if(err) return false
user.categories.push(params)
return user.save()
.then((updatedUser, err) => {
return err ? false : true
})
.catch(err => {
console.log(err)
})
})
.catch(err => {
console.log(err)
})
}
这是终端错误:
function addCategory(e) {
e.preventDefault();
fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/users`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${localStorage.getItem('token')}`
},
body: JSON.stringify({
name: name,
description: description,
type: type,
amount: amount
})
})
.then(res => {
return res.json()
})
.then(data => {
if (data === true){
Swal.fire({
title: "Category added!",
icon: "success",
})
Router.push('/category')
} else {
Router.push('/errors/1')
}
})
}
router.post('/', auth.verify, (req, res) => {
const user = auth.decode(req.headers.authorization)
CategoryController.addCategory(req.body)
.then(result => res.send(result))
})
module.exports.addCategory = (params) => {
return User.findById(params.userId)
.then((user, err) => {
console.log(user)
if(err) return false
user.categories.push(params)
return user.save()
.then((updatedUser, err) => {
return err ? false : true
})
.catch(err => {
console.log(err)
})
})
.catch(err => {
console.log(err)
})
}
您将使用名称、描述、类型和金额发送到后端对象,但不使用userId属性。在后端,find调用返回null。Find正在尝试获取具有未定义值的用户。@yochanansheinberger我已经尝试过了,先生,现在它返回一个不同的错误
错误:需要数据和salt参数
您要传递给CategoryController的请求正文。addCategory
不包含用户ID
参数,意思是user.findById(params.userId)
找不到任何用户。请尝试在您的请求中传递有效的userId
。@juliomalves我应该这样做吗,先生?`body:JSON.stringify({name:name,description:description,type:type,amount:amount})`是的,只要那是一个有效的用户ID
。它会在我的控制台上返回未定义的“userId”。我该怎么做呢,先生?