使用 Mongoose 搜索用户
Posted
技术标签:
【中文标题】使用 Mongoose 搜索用户【英文标题】:Search for user with Mongoose 【发布时间】:2016-10-22 23:57:34 【问题描述】:用户有帐户,可以使用Comment
Mongoose 模型发表评论。
是否可以允许用户在文本输入中输入username
并生成所有与用户相关的 cmets?
我一直在尝试使用db.users.find("name")
,但我不确定如何将username
从输入字段传递给搜索。有什么建议?
谢谢!评论模型如下。它将每个评论与用户联系起来。
var commentSchema = new mongoose.Schema(
body: String,
author:
id:
type: mongoose.Schema.Types.ObjectId,
ref: "User"
,
username: String
)
【问题讨论】:
你能告诉我们代码和数据库结构吗?generate all user associated comments
是什么意思?您想创建一条新记录还是想根据名称查找记录?
添加了上面的模型。 Shrabanee 我希望任何使用该网站的人都能够查找用户 cmets。所以“User1”可以通过在前端输入“User2”来搜索“User2”的cmets。
【参考方案1】:
您必须从text box
中获取另一个用户输入的user name
,并将其与后端请求 一起发送,例如uName : 'user2'
。
使用请求附带的对象中的值并在您的数据库中查找。
后端代码如下所示:-
var uName = req.params.uName
var cursor = db.users.find(username : uName.toString());
现在cursor
将为您提供来自您数据库中user2
的记录。
【讨论】:
【参考方案2】:前端
将带有查询字符串的 GET 请求发送到后端 API
<form method="get" action="/comments/user" >
<input type="text" name="username" placeholder="username">
<button type="submit">Search</button>
</form>
后端
编写一个API来处理GET请求和Mongoose Query
var app = express();
var Comment = mongoose.model('Comment', commentSchema);
app.get('/comments/user', function (req, res)
var query=Comment.find();
//get the Query String here
var filter=req.params.username;
if(filter.length>0)
query.where(author.username:filter);
query.exec(function (error, comment)
//send the result back to front-end
res.json( Comment: comment );
);
);
【讨论】:
以上是关于使用 Mongoose 搜索用户的主要内容,如果未能解决你的问题,请参考以下文章
使用 mongoose(Node.js) 在 MongoDB 中搜索
在 Mongoose 查询中使用 javascript Promise
无法使用 $pull (Mongoose) 为用户模型删除数组中的对象
如何在 mongoDB 或 mongoose 中进行部分搜索?