使用 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 中进行部分搜索?

使用 Mongoose/Express/Node 在一个 POST 路由中保存多个模型文档

使用 Mongoose 在 Node JS 中进行全文搜索