【发布时间】:2018-04-29 13:05:26
【问题描述】:
我在网站的管理面板中设置角色时遇到了一点问题。我设置的角色是 mmUser、mmMerchant、mmAdmin
当用户注册时,它们会自动设置为 mmUser,在管理面板中,我尝试将它们设置为 mmMerchant,现在我可以通过 MongoDB 设置手动完成。奇怪的是,我可以通过面板将它们从商家降级为 mmUser,但不能将它们作为商家。
有什么想法吗?
Controller.get('/make-merchant/:id/', function(req, res, next){
let id = req.params.id;
Collections
.Schemas
.Users
.find()
.then(results => {
results.roles.push('mmMerchant');
results.save()
.then(user=>{
res.redirect('/management/users/');
})
.catch(next)
})
.catch(next)
});
错误日志说明了这一点
TypeError: Cannot read property 'push' of undefined
Cannot read property 'push' of undefined
TypeError: Cannot read property 'push' of undefined
at Collections.Schemas.Users.find.then.results (D:\pre200\pre\routes\management\users.js:69:22)
at process._tickCallback (internal/process/next_tick.js:103:7)
最新代码
Controller.get('/make-merchant/:id/', function(req, res, next){
let id = req.params.id;
Collections
.Schemas
.Users
.find({_id: id })
.then(results => {
results[0].roles.push('mmMerchant');
results.save()
.then(user=>{
res.redirect('/management/users/');
})
.catch(next)
})
.catch(next)
});
【问题讨论】:
-
results.roles.push('mmMerchant');失败。results.roles未定义。console.log(results)能给你什么? -
@Kristianmitk 控制台说明了这个
Caught exception: Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader -
您在哪里添加了
console.log(..)?放在第一个.then()之后 -
@Kristianmitk 好吧,我的错误是我把它放在第二次捕获之后的最后,现在它在 Web 应用程序中的每个功能中都出现了 [model]。似乎它没有添加到角色的数组中。角色:数组[2] 0:“mmUser”1:“”
标签: javascript arrays json node.js mongodb