【问题标题】:Passing mongoose model to ejs and rendering in script tag将猫鼬模型传递给ejs并在脚本标签中渲染
【发布时间】:2014-04-11 01:14:21
【问题描述】:

我正在将我的模型返回到我的视图中,如下所示:

User.findOneById('xxx', function(err, result){
    res.render('viewName', {user: result});
}

然后,在我看来,我有一个脚本块,我试图将 user 分配给一个变量:

<script id="foundBusiness" type="text/javascript">
    var user = <%-user%>
</script>

这呈现为如下的 HTML

var user = { __v: 0,
  _id: 5315b7b9caaf52e624070002,
  firstName: 'Alex',
  lastName: 'Brown',
  password: '$2a$10$Zs/6JmB3Rq5dddHvjZNUse9vl.8z3hJO.LUGBqMEE.vBMk4lVuav.'}

我的问题与_id 字段有关
这显然不是有效的 Javascript,因此会发生错误:

SyntaxError: Unexpected token ILLEGAL

我做错了什么?

【问题讨论】:

    标签: javascript node.js mongoose ejs


    【解决方案1】:

    从马的嘴里

    ObjectIds 包含原始 MongoDB 二进制文件,不支持模板,因此我们提供 id 便捷方法将它们转换为十六进制字符串

    https://github.com/LearnBoost/mongoose/issues/548

    一种可能的解决方案 -

    User.findOneById('xxx', function(err, result){
        result._id = result._id.toHexString();
        res.render('viewName', {user: result});
    }
    

    我认为将它分配给 result.id 也可以。

    result._id = result.id;
    

    【讨论】:

    • ...那么在我看来我能做什么?
    • 您可以在将_id 的字符串表示形式传递给模板之前将其重新分配给自身。
    • 另外,如果我做 console.log(result.id); console.log(result._id); - 它们完全一样/
    • 在我看来,我在它周围运行了 JSON.stringify(result) ......这似乎解决了它
    • JSON.stringify 会将字符串传递给用户变量,因此不会引发错误
    猜你喜欢
    • 2013-02-04
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多