Node.js的两个并发请求混合在一起,而最后一个请求似乎被激发了两次

时间:2019-01-04 12:31:37

标签: javascript node.js multithreading

当用户在我的应用程序中搜索并且仅键入一个字符时,服务器会接收到他的请求并使用该请求构建NoSql查询(基于特定的配置,该示例可能不需要)。

但这是仅键入一个字母时查询的结果:

[ { '$match': 
     { status: [Object],
       '$text': [Object],
       _supplier: 5c2e22779389ca0ade28ee30 } },
  { '$lookup': 
     { from: 'tables',
       localField: 'type',
       foreignField: '_id',
       as: 'type' } },
  { '$unwind': '$type' }
]

这是当用户连续键入多个字符时(甚至2个字符就足以使这种情况发生):

[ { '$match': 
     { status: [Object],
       '$text': [Object],
       _supplier: 5c2e22779389ca0ade28ee30 } },
  { '$match': 
     { status: [Object],
       '$text': [Object],
       _supplier: 5c2e22779389ca0ade28ee30 } },
  { '$lookup': 
     { from: 'tables',
       localField: 'type',
       foreignField: '_id',
       as: 'type' } },
]

如您所见,我对用户进行查询,并使用array.unshift();

向其添加$ match对象

但是,当用户连续键入多个字符时,$ match对象的array.unshift()将被插入两次!

我试图检查Express的req对象是否被多次使用,但是我没有使用任何全局变量。 节点v9.2.0

用户正在发送两个相互冲突的并发HTTP请求。

0 个答案:

没有答案