【发布时间】:2020-02-05 07:10:35
【问题描述】:
我收到“无法读取未定义的属性‘重复’”错误,但在控制台日志记录中,似乎对象已明确定义,因此我不知道代码为什么会崩溃。
这是doc对象的控制台日志:
RESULT DOC: { _id: 5d9bc5c2bbb87318847cef91,
authData:
{ dateEffective: { attr: [Object], value: [] },
username: { attr: [Object], value: [Array] },
password: { attr: [Object], value: [Array] },
mainEmail: { attr: [Object], value: [Array] },
_id: 5d9bc5c2bbb87318847cef86 },
nameData:
{ title: { attr: [Object], value: [Array], enum: [Array] },
firstName: { attr: [Object], value: [Array] },
middleName: { attr: [Object], value: [Array] },
familyName: { attr: [Object], value: [Array] },
suffix: { attr: [Object], value: [Array], enum: [Array] },
_id: 5d9bc5c2bbb87318847cef87 }
. . .
. . .
这是meta的控制台日志:
META: { authData:
{ label: 'Authentication',
depth: 4,
hidden: false,
repeats: false },
nameData: { label: 'Name', depth: 5, hidden: false, repeats: false },
. . .
. . .
}
users_controller.js - 有问题的路线。 . .
exports.user_details_post = [(req, res, next)=> {
//LOG
console.log(`Request: ${util.inspect(req.body)}`); // <-- ALL GOOD HERE
next();
},
//VALIDATE
body('email', 'Must be valid email.').isLength({min: 5}).trim(),
//SANITIZE
sanitizeBody('*').escape(),
//SAVE
(req,res, next) =>{
let user = UserObj.findById(req.params.id, function(err,doc){
const errors = validationResult(req);
let activeArr = [];
let maxActive = 0;
if (err) {}
console.log(`RESULT DOC: ${util.inspect(doc)}`); // <-- ALL GOOD HERE. DOC APPEARS WELL-FORMED
Object.keys(doc).filter(sec=>sec!=="_id" && sec!=="__v").forEach(sec=>{
console.log(`SEC: ${util.inspect(sec)}`); // <-- PROBLEM HERE!
// "Sec" is "$___", but should be
// "authData", "nameData", etc.
// Note, I also tried
// "Object.keys(JSON.parse(doc)).filter.
// but that didn't work either
if (!!meta[sec].repeats) { // CRASHES HERE. "Meta" is well-defined,
// and has fields "authData", "emailData",
// etc., but "sec" seems to be problematic
Object.keys(sec).forEach(fld=> {
. . .
. . .
}
})
}];
显然,Object.keys(doc).forEach(sec=> . . . ) 构造似乎有问题,因为 sec 以 $___ 而不是 authData、nameData 等出现。我是否允许遍历 Object.keys(doc),如果是这样我做错了什么?
【问题讨论】:
-
遍历
Object.keys是允许且正常的。 -
好的。非常感谢。至少我知道我离基地不远。如果知道
Object.keys的输出为什么没有按预期工作,我将非常感激。 -
您的问题中有
...,这些属性不能在那里吗?
标签: javascript express