记录一次分离前端根据用户登录信息显示或不显示某元素的低级错误!

这次在用sapper写前端的时候,又犯了一个非常低级的错误,导致了长时间的页面无法访问,并且提示500错误,这个错误原来也经常犯,屡犯不改就是最大的错误,这次专门写一个博文来加深记忆!!!!

首先声明:这是一个极其低端的错误,任何前端工程师都不应该犯如此低级的错误!

前提背景:我们在做分离前端的时候,必然会涉及到登录,很多功能都是在登录状态下才会显示,就比如自媒体中心投稿之后,在稿件标题旁显示编辑和删除按钮,这里就要进行一个小判断,判断是否本稿件的创建人和目前登录的这个账号的id一致,也就是判断是否是本人,然后再显示编辑按钮,或者还可以加一个判断,比如管理员账号也可以直接显示编辑按钮,这个时候我那个低级错误就出现了,我进行了判断。

代码如下:

<h1 class="catd-title h5">
            {topic.title}
            {#if user._id == topic.creator._id || user.isadmin}
              <a href="/topic/edit?id={topic._id}">编辑</a>
            {/if}
</h1>

大家可以不用管topic对象,topic对象中包含了所需的数据,这里大家发现错误没有?

我本地开发的时候一直是保持登录状态,所以所有页面都含有user变量,这个变量我是注入了所有页面和路由的,当我认为一切都开发完毕,并且都上线了有一段时间之后,某天我登录数据消失,才发现所有这样写的页面全部提示500错误!

这个确实是一个低级错误,因为你要判断user._id,首先你得有user对象,但是如果你未登录,则session中读取的user对象为NULL,所以自然所有页面都报错。

这个时候只需要小改一下即可,代码如下:

{#if user && (user._id == topic.topic.creator._id || user.isadmin)}
    <a href="/topic/edit?id={topic._id}">编辑</a>
{/if}

即首先得判断user对象是否存在!!!!!!!

这是一个如此低级的错误,我希望以后再也不要犯!