这是有问题的for循环:
console.log(sender1[0]); // returns user object
console.log(sender1.length); // returns 1
for (var i = 0; i < sender1.length; i = i + 1) {
console.log(sender1[i].phone); // returns can't read phone property of undefined
}
这是我收件人1的地方
User.find().where({
code: req.body.Body.toUpperCase()
}).exec(function (err, sender1) {
这是使用mongoose,所以sender1已经是一个数组。我尝试使用.toArray,它说find没有方法“toArray”。
如果我用发件人[0]替换所有发件人[i],一切正常。 但是它说发件人[i] .somename是未定义的。我的循环出了什么问题?
第二次更新:
2015-02-01T20:38:20.900903+00:00 app[web.1]:
2015-02-01T20:38:20.930258+00:00 app[web.1]: error: Script restart attempt #1
2015-02-01T20:38:20.894952+00:00 app[web.1]: this is sender1 length 1
2015-02-01T20:38:20.895077+00:00 app[web.1]: The for loop executed!
2015-02-01T20:38:20.895465+00:00 app[web.1]: this is sender1 section ["54baf92d2b54840900dcb971"]
2015-02-01T20:38:20.895504+00:00 app[web.1]: jj is 0
2015-02-01T20:38:20.900455+00:00 app[web.1]: This is the from1 phone +19206398297
2015-02-01T20:38:20.901052+00:00 app[web.1]: console.log('This is the section1 phone',sender1[jj].phone);
2015-02-01T20:38:20.901050+00:00 app[web.1]: /app/packages/timeoff/server/controllers/timeoff.js:104
2015-02-01T20:38:20.903068+00:00 app[web.1]: TypeError: Cannot read property 'phone' of undefined
2015-02-01T20:38:20.901184+00:00 app[web.1]: ^
2015-02-01T20:38:20.903071+00:00 app[web.1]: at Promise.<anonymous> (/app/packages/timeoff/server/controllers/timeoff.js:104:53)
2015-02-01T20:38:20.903072+00:00 app[web.1]: at Promise.<anonymous> (/app/node_modules/mongoose/node_modules/mpromise/lib/promise.js:177:8)
2015-02-01T20:38:20.903074+00:00 app[web.1]: at Promise.emit (events.js:95:17)
2015-02-01T20:38:20.903075+00:00 app[web.1]: at Promise.emit (/app/node_modules/mongoose/node_modules/mpromise/lib/promise.js:84:38)
2015-02-01T20:38:20.903077+00:00 app[web.1]: at Promise.fulfill (/app/node_modules/mongoose/node_modules/mpromise/lib/promise.js:97:20)
2015-02-01T20:38:20.903079+00:00 app[web.1]: at model.Document.init (/app/node_modules/mongoose/lib/document.js:250:11)
2015-02-01T20:38:20.903078+00:00 app[web.1]: at /app/node_modules/mongoose/lib/query.js:1394:13
2015-02-01T20:38:20.903081+00:00 app[web.1]: at completeOne (/app/node_modules/mongoose/lib/query.js:1392:10)
2015-02-01T20:38:20.903082+00:00 app[web.1]: at Object.cb (/app/node_modules/mongoose/lib/query.js:1151:11)
2015-02-01T20:38:20.903083+00:00 app[web.1]: at Object._onImmediate (/app/node_modules/mongoose/node_modules/mquery/lib/utils.js:137:16)
2015-02-01T20:38:20.922158+00:00 app[web.1]: error: Forever detected script exited with code: 8
2015-02-01T20:38:21.737499+00:00 app[web.1]: Mean app started on port 55934 (development)
以下是未格式化的完整代码,希望有人看到破坏循环的细微差别:
User.find().where({
code: req.body.Body.toUpperCase()
}).exec(function (err, sender1) {
// Who sent the message?
console.log('this is sender1 length ', sender1.length);
for (var jj = 0; jj < sender1.length; jj = jj+1) {
console.log('The for loop executed!');
console.log('this is sender1 section', sender1[jj].section);
console.log('jj is', jj);
User.findOne({
phone: req.body.From,
section: sender1[jj].section
}, function (err, from1) {
console.log('This is the from1 phone',from1.phone);
console.log('This is the section1 phone',sender1[jj].phone);