Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当放置在条件中时,typeof主体从字符串变为未定义_Javascript_Node.js_Express_Mongoose - Fatal编程技术网

Javascript 当放置在条件中时,typeof主体从字符串变为未定义

Javascript 当放置在条件中时,typeof主体从字符串变为未定义,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,最后一个if块不接受主体变量的值,并将其转换为未定义的。块之前的控制台日志显示变量的类型是“string”,但不知何故,在条件的条件和语句中,主体变为未定义 doc=doc.map(el=>{ 设{title,body,_id,likes}=el 如果(标题和标题长度>20){ el={ …呃, 标题:`${title.slice(0,20)}…`, } }如果(!title | | typeof title==‘未定义’),则为else{ el={ …呃, 标题:“”, } } 控制台日志(主

最后一个
if
块不接受主体变量的值,并将其转换为
未定义的
。块之前的控制台日志显示变量的类型是
“string”
,但不知何故,在条件的条件和语句中,主体变为
未定义

doc=doc.map(el=>{
设{title,body,_id,likes}=el
如果(标题和标题长度>20){
el={
…呃,
标题:`${title.slice(0,20)}…`,
}
}如果(!title | | typeof title==‘未定义’),则为else{
el={
…呃,
标题:“”,
}
}
控制台日志(主体类型)
如果(体长>55){
el={
…呃,
正文:`${body.slice(0,55)}…`,
}
}
title=el.title
body=el.body
控制台日志(主体类型)
返回{u id,title,body,likes}
})
日志的终端输出如下所示:

[nodemon] restarting due to changes...
[nodemon] starting `node server.js`
App running on port 5000...
string
undefined
string
undefined
string
undefined
这三个不同的结果表示doc数组中的三个不同文档,因此是与每个body值及其更改相关的六个控制台日志输出。
我在javascript中没有使用分号,这可能是这个问题的原因吗?

仍然不知道为什么早期的代码不起作用,但是这个小得多的代码似乎起到了作用

doc = doc.map(el => {
        let { title, body, _id, likes } = el
        body = `${body.slice(0, 55)}...`
        if (title && title.length > 20) {
          title=`${title.slice(0, 20)}...`
        } else if (!title || typeof title === 'undefined') {
          title= '...'
        }
        return {_id,title,body,likes}
      })
它之所以有效,是因为我不需要检查主体的长度是否大于55,因为较小的值将始终恢复到其原始大小。所以我先修剪身体,然后是标题


感谢所有帮助过我的人!仍将查找早期代码的错误/问题。

与问题无关,但
| | typeof title===“undefined”
是多余的。未定义是错误的,所以
!title
将为true。是否只有在
body.length>55
时才会发生这种情况?您能否将其简化为一个示例?所有用于访问模型的异步代码似乎都不相关,我们只需要从
doc
的值开始。是的,因此doc是一个文档对象数组,每个对象都有
\u id、title、body
等字段。当向用户发送数据时,我需要修剪数据,例如
body.length>55
等。一旦数据到达最后一个嵌套的if块,
body
被视为未定义。
>55
不相关,数字是主观的。感谢您告知操作员的
类型