我想要生成类似于此http://localhost:9090/api/${randomId}
的url模板字符串,并在带有以下HTML标记<a href="urlTemplateString">Click Here To See User Profile</a>
的index.ejs文件中实现此字符串。
我使用Mongo数据库使用以下randomId
检索此Users.find({}).distinct("_id")
。一旦我获得了所有用户id,我想从数组中获得一个随机id。为实现这一点,我使用了lodash _.sample()
。
我正在使用JavaScript Promises尝试将我想要的随机ID放在字符串中。但是,当我来res.render()
结果时,我似乎得到的只是http://localhost:9090/api/[object Promise]
。
到目前为止,我的代码如下:
function getRandomUserId(req, res, next) {
return new Promise((resolve, reject) =>
resolve(Users.find({}).distinct("_id"))
)
.then(allUserIds => {
return new Promise((resolve, reject) => resolve(_.sample(allUserIds)));
})
.then(randomId => {
res.render("index.ejs", {
link: `http://localhost:9090/api/${randomId}`
});
});
}
我能够检索随机ID和控制台记录此随机ID,但我无法将此随机ID返回到最终的url模板字符串。
如何执行此异步操作以将randomId
返回到url模板字符串?
答案 0 :(得分:0)
function getRandomUserId(req, res, next)
{
return Users.find({}).distinct("_id").exec() // assuming mongoose
.then((allUserIds) =>
{
res.render
(
"index.ejs",
{
link: `http://localhost:9090/api/${_.sample(allUserIds)}`
}
);
});
}