我正在尝试在名为“模板”的集合中获取2个随机文档,但仅收到内部服务器错误。
我已经在mongo shell中成功测试了以下代码:
db.templates.aggregate([{"$sample":{"size":2}}])
fastify
语法是否有问题?
module.exports = async fastify => {
fastify.get(
'/',
{
schema: {
response: {
200: {
type: 'object',
items: {
type: 'object',
properties: {
_id: {
type: 'string'
}
}
}
}
}
}
},
async (req, res) => {
try {
const result = this.mongo.db
.collection('templates')
.aggregate([{ $sample: { size: 2 } }])
return await result
} catch (err) {
res.internalServerError()
}
}
)
}
module.exports.autoPrefix = '/questions'
我收到内部服务器错误,需要2个随机文档。
答案 0 :(得分:0)
问题在于您的路线的处理程序。
如果使用箭头功能,var flowers = Array.from({length: 10}, function(_, i){
return {
base_x: i * 100,
base_y: height - 50,
stem_h: random(50, 400),
col: color(
random(0, 255),
random(0, 255),
random(0, 255)
)
};
});
是上限,而如果您使用简单的功能,this
将绑定到fastify实例。
所以您应该更改为:
this
否则,请删除async function (req, res) {
try {
const result = this.mongo.db // this will work as expected
.collection('templates')
.aggregate([{ $sample: { size: 2 } }])
.toArray()
return await result
} catch (err) {
res.internalServerError()
}
}
:
this