node.js - 从 mongo 向 find() 添加字段后无法检索数据
问题描述
我开发了一个代码,我可以从文件系统中检索所有视频,其文件路径存储在 mongo 数据库中:
app.get("/myvideos", function(request, result){
database.collection("videos").find({}).toArray(function(error, videos){
result.render("myvideos", {
"isLogin": request.session.user_id ? true : false,
"videos": videos
});
});
});
上面的代码正在正确地检索文件。但是我希望检索特定用户的文件。我的数据库架构是:
{
"_id" : ObjectId("60914d02185c2a08add68fa2"),
"user" : {
"_id" : ObjectId("60914c73185c2a08add68fa0"),
"name" : "Saumitra Lele",
"image" : "",
"subscribers" : 0
},
"filePath" : "public/videos/1620135170700-bigbuck.mp4",
"thumbnail" : "public/thumbnails/1620135170700-Photo - Saumitra Lele.jpeg",
"title" : "First video uploaded",
"description" : "First video uploaded by Saumitra Lele",
"tags" : "Saumitra Lele video",
"category" : "Technology",
"createdAt" : 1620135170708,
"minutes" : 0,
"seconds" : 32,
"hours" : 0,
"watch" : 1620135170708,
"views" : 0,
"playlist" : "",
"likers" : [ ],
"dislikers" : [ ],
"comments" : [ ]
}
但是,当我尝试检索特定用户的文件时,它不起作用:
app.get("/myvideos", function(request, result){
database.collection("videos").find({user:{_id:{$in:[user._id]}).toArray(function(error, videos){
result.render("myvideos", {
"isLogin": request.session.user_id ? true : false,
"videos": videos
});
});
});
解决方案
我得到了解决方案。这有效:
当用户会话登录时,我创建了一个新变量来存储用户名,如下所示:
request.session.user_name = user.name
然后使用上面的进行比较:
app.get("/myvideos", function(request, result){
//var logInId = request.session.user_id;
database.collection("videos").find({"user.name":request.session.user_name}).sort({
"createdAt": -1
}).toArray(function(error, videos){
result.render("myvideos", {
"isLogin": request.session.user_id ? true : false,
"videos": videos
});
});
});
以上工作正常!
推荐阅读
- wpf - keyDown 事件在按下并释放第二个键后停止触发
- python - 转换数据帧的 2 列,在对应的 uint16_t 的列中存储两个 uint8_t
- c++ - 如何定义构造函数c ++
- java - 使用 GLES30 进行 VAO 渲染:偏移量/长度错误!!!!!!错误
- c# - 使用 Span 存储单词集合的有效方法是什么
? - python - AttributeError:“str”对象没有属性“add_picture”
- amazon-web-services - AWS Cognito 客户端 SDK v3 在运行管理员禁用用户命令时返回未定义的“byteLength”
- c++ - 在方法调用参数中创建对象返回空对象?
- javascript - 重新加载页面后在 IE11 上未定义“承诺”
- node.js - Mongoose 和 connect-mongo