繁体   English   中英

Javascript 将用户名的每个部分添加到关键字数组以进行 Web 套接字查询?

[英]Javascript add each part of username to keywords array for web-socket queries?

我正在尝试使用 websocket 事件添加用户用户名的关键字以便更快地查询。

在我的 userSchema 中,我将关键字索引设置为 true:

  keywords: {
      // for live search of username
      type: [String],
      index: true,
    },

例如,如果用户的用户名是“johnsmith”,我需要使用以下内容保存一个数组。

user.keywords = [j, jo, joh, john, johns, johnsm, johnsmi, johnsmit, johnsmith]

我将在我的 userSchema.pre('save') 中执行此操作。

下面是我的目标,但我将如何将用户名 append 设置为部件数组,然后设置 user.keywords = 部件? 我是否正确索引 user.keywords 属性?

谢谢!

userSchema.pre(`save`, async function (next) {
  const user = this

  if (user.isModified(`username`)) {
    let parts = []
    for (let i = 0; i < user.username.length; i++) {
      parts.push(*???*)
    }
    user.keywords = parts
  }

  next()
})

正如我所看到的,您正在尝试确保即使搜索了名称的一部分,在从数据库中获取时也会找到它?

您可以只使用正则表达式进行搜索,而不是在数组中写入可能的请求。

User.find({ username: {$regex : `/^${requestedSearch}/`}});

现在,这将为您找到用户名以请求的字符串开头的结果。

如果您的用户名是“Steve”并且您搜索“Ste”,它将从数据库中返回该用户。 您还可以添加区分大小写等选项。

以下是更多信息:https://docs.mongodb.com/manual/reference/operator/query/regex/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM