Node.js 如果项目为空,如何忽略该项目

Node.js 如果项目为空,如何忽略该项目,node.js,express,mongoose,Node.js,Express,Mongoose,我想在表单上发布,但并非总是需要发布所有项目。我该怎么做 const { title, subtitle, content, createdAt, image } = request.body; const { key } = request.file; let url = `${process.env.APP_URL}files/${key}`; const post = await Post.create( { ima

我想在表单上发布,但并非总是需要发布所有项目。我该怎么做

 const { title, subtitle, content, createdAt, image } = request.body;
      const { key } = request.file;
      let url = `${process.env.APP_URL}files/${key}`;
      const post = await Post.create(
        {
          image: url,
          title,
          subtitle,
          content,
          createdAt,
          createdby: request.userId,
        }

从我对你的问题的理解中,你可能需要考虑它是如何最终显示在前端的。

让我们想象一下,您设计的前端需要上述所有项目。如果您仍然想让用户创建一篇文章而不使用其中的任何一个,那么最终会导致UI中缺少元素,这甚至可能导致错误,具体取决于您如何呈现这些元素

解决方法是有条件地呈现每个项目。换句话说,若项不为null,则将其添加到DOM中

或者,您可以设置默认值,而不是null

例如,如果没有提供,则图像可以是通用图像url:

image: url || 'directory/to/your/default/image'
编辑以处理无文件场景:

let url = 'directory/to/your/default/image'
if (request.file !== undefined && request.file) {
  const { key } = request.file;
  url = `${process.env.APP_URL}files/${key}`;
}

我希望它能为您提供一些方法。

如果您想让用户在缺少参数项的情况下创建帖子,那么您可以设置默认值,如果没有参数项,则可以使用默认值。@JakubASuplicki在本例中,默认值设置为空。您是否有任何特定的冗余项?我希望它位于图像字段中。但它也出现了这个错误。无法分解“undefined”或“null”的属性键。这似乎是另一个问题,与本例中的问题无关。导致它的行似乎是const{key}=request.file;需要更多信息才能对此进行调试。在这种情况下,不会触发request.file,因为其中没有字段。我想知道如何忽略这一点,我想你可以先检查你的请求中是否有文件,然后再覆盖URL。否则,将保留默认图像。编辑了答案。