一直报这个syntaxerror 又不指出是哪一行的错误,我找了一个下午再加上一晚上的bug,都没找出来。
事情是这样的,
const { Article } = require('../../model/article')
module.exports = async (req, res) => {
// 向模板中开放标识,标识当前访问的是用户管理界面
req.app.locals.currentLink = 'article';
// 查询所有文章数据 使用populate显示来自user集合的author信息
let articles = await Article.find().populate('author');
res.send(articles);
// 渲染文章列表模板
// res.render('admin/article.art',{articles});
}
如果我直接这样 res.send(articles)完全没有问题,可以在浏览器正常输出。
但是如果res.render(‘admin/article.art’,{articles}),渲染到模板中就报错了。
解决办法:
1.在populate后面加lean(),lean():是告诉mongoose返回的是普通对象,而不是mongoose文档对象。
let articles = await Article.find().populate('author').lean();
2.先通过JSON.stringify()这个方法将文档对象转为字符串,之后再用JSON.parse()转换回来。
参考文章:
https://blog.csdn.net/IsAlwaysWhite/article/details/109953711
https://blog.csdn.net/weixin_51519209/article/details/111934258
最后,老母亲我留下了幸福的泪水,我实在太笨了。