【发布时间】:2019-01-08 06:11:10
【问题描述】:
我是 Node 和 Mongo 的初学者,所以我需要一些帮助。我正在练习链接承诺和 MongoDB。我想将 2 个插入操作链接在一起。但是,当我运行此代码文件时,出现错误:“TypeError: Cannot read property 'db' of undefined 在 /Users/jenniferzhou/Documents/2018 - 2019/MEAN Practice/Guru99/E8/mongopractice5.js:12:22 在 process.internalTickCallback (internal/process/next_tick.js:77:7) " 该错误表明问题出在这行代码上:“var db = client1.db('EmployeeDB')”。但是,我不确定为什么这条线会返回错误。我知道 MongoClient.connect(url, { useNewUrlParser: true }) 返回一个承诺,但是这个承诺在某种程度上与第一个 .then(...) 返回的承诺不同吗?
var Promise = require('promise')
var MongoClient = require('mongodb').MongoClient
var url = 'mongodb://localhost:27017'
MongoClient.connect(url, { useNewUrlParser: true }).then(function(client) {
var db = client.db('EmployeeDB')
db.collection('Employee').insertOne({
Employeeid: 4,
EmployeeName: "NewEmployee"
})
client.close()
}).then(function(client1) {
var db = client1.db('EmployeeDB')
db.collection('Employee').insertOne({
Employeeid: 5,
EmployeeName: "NewEmployee1"
})
client1.close()
}).catch(function(err) {
console.log(err)
})
【问题讨论】:
-
似乎你没有从第一个
then尝试登录 client1 中返回任何内容,我猜它未定义。 -
在第二个
.then()中,'client1' 将未定义,client超出范围。你需要阅读How do I access previous promise results in a .then() chain?。