gpt4 book ai didi

Node.js async.forEach : Cannot read property 'value' of undefined

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

我感觉我犯了一个明显的错误,但找不到它。

我得到的错误是:

node_modules/async/lib/async.js:194
iterator(x.value, function (err, v) {
^
TypeError: Cannot read property 'value' of undefined

这是我的代码:

this.createProfiles = function (serviceUserid, serviceName, newProfiles, type, callback) {
var userids = [];
function iterator (i, callback) {
var profile = newProfiles[i];
if (typeof profile == 'undefined') {
var userid = i;
profile = {};
} else {
if (profile.userid) {
var userid = profile.userid;
} else if (profile.id) {
var userid = profile.id;
}
}
userid = String(userid);
createProfile(userid, serviceName, profile, callback);
userids.push(userid);
}
async.forEach(newProfiles, iterator, function(){
createRelation(serviceUserid, serviceName, userids, type, callback);
});
}

这是完整的堆栈跟踪:

node_modules/async/lib/async.js:194
iterator(x.value, function (err, v) {
^
TypeError: Cannot read property 'value' of undefined
at /Users/jacob/Sites/Konfect.node/node_modules/async/lib/async.js:194:23
at /Users/jacob/Sites/Konfect.node/node_modules/async/lib/async.js:118:13
at /Users/jacob/Sites/Konfect.node/node_modules/async/lib/async.js:129:25
at /Users/jacob/Sites/Konfect.node/node_modules/async/lib/async.js:196:17
at /Users/jacob/Sites/Konfect.node/node_modules/async/lib/async.js:499:34
at /Users/jacob/Sites/Konfect.node/models/profile.js:85:8
at [object Object].<anonymous> (/Users/jacob/Sites/Konfect.node/node_modules/mongodb/lib/mongodb/collection.js:416:9)
at [object Object].emit (events.js:67:17)
at [object Object].<anonymous> (/Users/jacob/Sites/Konfect.node/node_modules/mongodb/lib/mongodb/connections/server.js:102:16)
at [object Object].emit (events.js:64:17)

是的,我使用 async .

有什么想法吗?

最佳答案

异步需要一个非稀疏数组,但我猜测,根据您使用“i”作为用户 ID,newProfiles 是稀疏填充的并由用户 ID 索引。

此外,迭代器的第一个参数是数组中的实际值('profile'),而不是索引('i')。另外,在将“callback”传递到 createProfile 后调用“userids.push(userid)”也是不好的形式。你应该这样做。

createProfile(userid, serviceName, profile, function() {
userids.push(userid);
callback();
});

总的来说,有几种可能的方法可以解决稀疏问题。例如,您可以尝试使用 async.parallel,并传递按键索引的对象。

但首先我想问,使用稀疏性来指示创建新配置文件不会导致大量用户 ID 冲突吗?一旦您在第一个项目稀疏的情况下调用 createProfiles 两次,它就会尝试创建 userid = 0 的第二个配置文件。通常,当您想要创建新内容时,您实际上会让“createProfile”生成并返回新 ID。

关于Node.js async.forEach : Cannot read property 'value' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023591/

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