如何在Handlebars中拼接含Mongo ID的URL?求助实现方案
解决MongoDB ObjectId拼接URL的问题
别担心,这个问题其实挺常见的——MongoDB里的_id是ObjectId类型的对象,不是普通字符串,直接拼接的话会得到[object Object]这种无效内容,自然没法正确生成URL。
这里有几个简单靠谱的解决办法:
最直接的方式:调用
toString()方法
显式把ObjectId转换成字符串就行,修改后的代码如下:<a href='/updateReminder/'+photo._id.toString()>Update Details</a>ObjectId的
toString()方法会直接返回它的十六进制字符串形式(比如60d21b4667d0d8992e610c85),这样拼接出来的URL就完全符合需求了。备选方案:使用
toHexString()
这个方法和toString()效果完全一致,专门用来获取ObjectId的十六进制字符串:<a href='/updateReminder/'+photo._id.toHexString()>Update Details</a>如果用模板引擎(比如EJS、Handlebars)
很多模板引擎会自动帮你处理类型转换,比如在EJS里可以直接这么写:<a href='/updateReminder/<%= photo._id %>'>Update Details</a>模板引擎会自动调用ObjectId的toString方法,不用你手动转换。
核心逻辑就是把ObjectId对象转换成它对应的十六进制字符串,这样URL拼接就不会出问题啦。
内容的提问来源于stack exchange,提问作者megler
相关产品推荐
相关产品推荐

