gpt4 book ai didi

node.js - Mongodb $addFields,从函数返回字段值?

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:59 25 4
gpt4 key购买 nike

我将云中提供的视频的视频 ID 存储在我的 mongodb 集合中。当我的前端对该视频进行 API 调用时,我想根据该视频 ID 返回格式化的 URL。我有一个函数可以执行此操作,但我无法让它与 $addFieldsaggregate 管道中一起使用:

我的文档如下所示:

{
"date" : ISODate("2018-03-30T00:00:00.000+0000"),
"title" : "Tips and Tricks",
"video_id" : "13966740",
}

...我希望我的 API 调用返回它们并带有一个额外的字段,“image_url”:

{
"date" : ISODate("2018-03-30T00:00:00.000+0000"),
"title" : "Tips and Tricks",
"video_id" : "13966740",
"image_url" : "https://myhostingservice.com/13966740/preview_image",
}

这就是我在 models/video.js 中尝试的:

const hostingservice = require('myhostingservicehelperfunctions');

module.exports.getVideo = function (callback) {
videoCollection.aggregate(
[
{ $match: { } },
{ $addFields: {
image_url: hostingservice.createImageURL("$video_id")
}
},
{ $sort: {
'date' : -1 }
}
],
callback);
};

辅助函数仅接受字符串参数并返回一个字符串。

myhostingservicehelperfunctions.js:

module.exports.createImageURL = function ImageURL(video_id){
return 'https://myhostingservice.com/' + video_id + '/preview_image';
};

我的前端收到了所有正确的数据,但是 image_url 的值是“https://myhostingservice.com/$video_id/preview_image”,这让我认为我的函数运行了,但它传递的是实际的字符串 “$video_id”,而不是键的值 video_id。仔细观察,该 URL 包含 "$video_id",而不是上面示例中的 "13966740"

我在这里做错了什么?

最佳答案

您不能像 mongoDB 聚合中那样连接字符串,您需要使用 concat 运算符来连接字符串,因此函数“createImageURL”应该如下所示,

module.exports.createImageURL = function ImageURL(){
return { $concat: [ "https://myhostingservice.com/", "$video_id", "/preview_image" ] };
};

关于node.js - Mongodb $addFields,从函数返回字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54225337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com