当前位置: 首页 > 知识库问答 >
问题:

如果没有值,使用MongooseJS填充文档

康鹏云
2023-03-14

假设我有这样一个用户模型

var userSchema = new Schema({
    username : String,
    email    : String,
    project  : {type : String, ref : "Project"}
});

和这样的用户文档。

{
    "_id"      : ObjectId("56df56c58a4d47c83bf41603"),
    "username" : "user1",
    "email"    : "email@example.com",
    "project"  : "",
    "__v"      : 1
}

如果我执行以下操作,页面将永远不会加载。

User.findById("56df56c58a4d47c83bf41603").populate("project").exec()
.then(function(userObj) {
    res.render('user', {
        user : userObj
    });
});

如果里面有一个实际的ObjectID,它可以正常工作,但当它是空白的时候就不行了。

如果值中没有ObjectID,是否有一种方法可以默认为null?

共有1个答案

欧阳翔
2023-03-14

所以问题的答案在这里:

Mongoose:CastError:path“\u id”处的值“[object object]”转换为ObjectId失败

字符串将引发强制转换错误。您没有捕获基于promise的呼叫中的异常,因此您的路由超时。

教训是捕获异常。就像使用回调时一样。

 类似资料:
  • 问题内容: 只是一个简单的查询,例如在模型中使用双引用。 模式/模型 询问 我已经尝试过类似的东西 实际上,只有人口之一在工作。 那么,如何让两个人口工作呢? 问题答案: 您已经在使用以下正确的语法: 也许订单中的ObjectId不在集合中?

  • 问题内容: 使用mongoosejs填充和直接对象包含之间是否有性能差异(查询的处理时间)?什么时候应该使用? 猫鼬人口的例子: 猫鼬对象嵌套示例: 问题答案: 关于猫鼬种群的第一件事,是要了解它不是魔术,而只是一种方便的方法,它使您无需亲自完成所有操作即可检索相关信息。 该概念主要用于以下情况:您决定需要将数据放置在单独的集合中,而不是将数据嵌入其中,并且主要考虑因素通常应在文档大小上,或者在相

  • 我遇到了以下问题:当手机应该输入时,我需要实现这种情况的解决方案。这部手机应该有不可移动的部分,最后四个数字应该在开头填写下划线,然后当用户键入下划线时,应该将其更改为数字,例如: < code> 12345____ - 我实现了不可移除的部分。我是这样做的: 但现在我不明白,如何处理下划线的逻辑。我尝试在< code>doAfterTextChanged中添加下划线,比如if

  • 因此,我试图在我的JavaFX应用程序中创建一个自定义节点,它从扩展而来,因此可以自己进行渲染。我一开始只是试着画一个文本“Hello world”在画布上,但可惜它没有出现,即使我可以通过鼠标事件处理程序确认应用程序中是否存在自定义节点。 简而言之,如果我将这个的一个新实例添加到一个

  • 我正在构建一个CRUD应用程序,使用embers作为客户端,struts2作为服务器。从ember创建记录的post请求如下所示, 接受:application/json、text/javascript、/;q=0.01接受编码:gzip,deflate,br接受语言:en-GB,en-US;q=0.9,en;q=0.8连接:保持活动内容长度:54内容类型:应用程序/json;字符集=UTF-8主

  • 问题内容: 我是Java新手,我有一个像这样的文本文件 我想用此文本文件中的数据填充“ jTable”。下面是到目前为止我的代码不起作用。当我执行程序时,表上没有任何显示。 有人可以帮帮我吗? 问题答案: 您需要将其更改为以下内容。每次读取新行时,都需要重置矢量,否则它包含第一行+第二行+以此类推。您还可以调用以避免初始行为空。并且您只需要添加行,您的注释[单元格包含很多列]的问题是由于 使用而引