gpt4 book ai didi

javascript - NodeJS MongoDB 查询

转载 作者:太空宇宙 更新时间:2023-11-04 03:24:16 25 4
gpt4 key购买 nike

我正在使用 NodeJS 和 MongoDB 数据库构建一个 Web 应用程序。目前,以下内容让我感到沮丧 - 我缺乏对回调/(a)同步元素的理解,并且仍在学习这一点,所以我认为它与这方面有关。

我有两个主要模块:

DB.js 导出 - 该函数在被自身调用时起作用:

DB.GetSuggestions: function(searchTerm) {
return MongoClient.connect(url).then(function(db) {
var collection = db.collection("AccentPairs");
collection.updateMany(
{Unstressed: searchTerm},
{$inc: {QueryCount: 1}}
);
var result = collection.aggregate([
{ $match: { Unstressed: searchTerm } },
{ $group: { _id: {"WordID": "$WordID", "WordName": "$WordName", "Unstressed": "$Unstressed", "Stressed": "$Stressed", "TranslationEn": "$TranslationEn"}, Forms: { $push: "$Field" }}}
]).sort( { Chosen: -1} ).toArray();
db.close();
return result;
});
}

TextHandler.js:

var DB = require("../DB");

function ImportText(Text) {
var fullText = Text.trim();
var TextObject = {AuthorName: "", Title: "", Words: []};
var currentWord = "";
var BOS = true;
var EOS = false;
let reg = /([а-яА-ЯЁё́]+)([^а-яА-ЯЁё́]*)/g;
var result;
while (result = reg.exec(fullText)) {
BOS = EOS;
EOS = (result[2].indexOf(".") > -1);
currentWord = result[1];
WordObject = {WordText: result[1], WordID: "0", Options: [], Tail: result[2], BOS: BOS, EOS: EOS};
TextObject.Words.push(WordObject);
}
//This is what doesn't work - GetSuggestions within the loop doesn't work.
TextObject.Words.forEach(function(wd){

console.log(wd.WordText);
DB.GetSuggestions(wd.WordText).then(function(suggestions){
wd.Options = suggestions;
});
});
}

我正在尝试迭代 TextObject.Words 数组并使用 GetSuggestions 函数在数据库中搜索建议。在循环内调用 GetSuggestions 不起作用,在循环外调用 GetSuggestions 则有效。

错误信息: 奥 git _a<--- 最后几次 GC --->

29335 ms:标记-扫描 1386.5 (1440.6) -> 1386.5 (1440.6) MB,1156.9/0.7 ms [分配失败] [旧空间请求中的 GC已使用]。 30456 ms:标记-扫描 1386.5 (1440.6) -> 1387.5 (1424.6) MB,1120.6/0.7 ms [最后的手段 gc]。 31576 毫秒:标记-扫描 1387.5 (1424.6) -> 1388.4 (1424.6) MB,1119.4/0.7 毫秒 [最后的手段 gc]。

<--- JS 堆栈跟踪 --->

==== JS 堆栈跟踪 ==========================================

安全上下文:000001186EBCBB49 1:/* 匿名 /(又名/ 匿名 */) [C:\Home\CS\TextAnalysis\Ezhik\node_modules\mongodb\lib\url_parser.js:~7] [pc=000003CC6CBB279E](这=000001186EB04381​​,url=0000004FD766F421) 2:参数适配器框架:2->1 3: 连接(又名连接) [C:\Home\CS\TextAnalysis\Ezhik\node_modules\mongodb\lib\mongo_client.js:~390] [pc=000...

fatal error :CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足

最佳答案

您不能以这种方式将 forEach 与 Promisified GetSuggestion 调用一起使用。请使用 Promises 来迭代 TextObject。请参阅下面的链接(#错误编号 2)以了解如何在此类场景中使用 Promise。

关于javascript - NodeJS MongoDB 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46653111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com