这是我的server.js
:
我正在尝试通过firstName和lastName获取数据, 然后传递数据并记录firstName:
mongoDb.getFromDb(req.body.firstName, req.body.lastName)
.then(
rows => {
rows.each(function(err, item) {
console.log(item.firstName);
})
}
)
});
mongoDb.js
:
我有一个init函数,它创建一个名为connectingDb
的promise。
它连接到DB。
// Use connect method to connect to the Server
function init() {
connectingDb = new Promise(
function(resolve, reject) {
MongoClient.connect(url, function(err, db) {
if (err) {
console.log('Unable to connect to the mongoDB server. Error:', err);
reject(err);
} else {
console.log('Connection established to', url);
//Close connection
//db.close();
resolve(db);
}
});
}
);
}
此函数获取名字和姓氏,并按这些条件返回行。
function getFromDb(firstName, lastName) {
return new Promise(
function(resolve, reject) {
connectingDb.then(myDb => {
console.log('a1a1a1');
resolve(myDb.collection('alon').find({
"firstName": firstName,
"lastName": lastName
}));
}).catch(err => {
console.log(err)
})
}
)
}
这是我在`mongodb powershell'中写的数据:
错误是:
a
D:\Search\node_modules\mongodb\lib\utils.js:98
process.nextTick(function() { throw err; });
^
TypeError: Cannot read property 'firstName' of null
虽然a
是第一个名字..
我猜函数mongoDb.getFromDb
因为承诺而被调用两次。
任何帮助表示赞赏!
答案 0 :(得分:0)
在rows
内item
可能会更改为rows.each
吗?
也就是说,而不是
...
rows.each(function(err, item) {
console.log(rows.firstName);
})
...
更像是
...
rows.each(function(err, item) {
console.log(item.firstName);
})
...
更新:此外,您可能希望使用forEach代替each
,这样
getFromDb(firstName, lastName)
.then(
rows => {
rows.forEach(function(item) {
console.log(item.firstName);
})
}
);