将mongoose模型传递给ejs并在脚本标记中呈现

时间:2014-03-07 18:20:21

标签: javascript node.js mongoose ejs

我将我的模型返回到我的观点:

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:意外的标记ILLEGAL

我做错了什么?

1 个答案:

答案 0 :(得分:1)

从马的嘴里

  

ObjectIds包含原始MongoDB二进制文件,不能使用模板化,因此我们提供了id方便方法将它们转换为hexstrings

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;