我在这里得到了这些神秘的线条:
DEBUG:连接Mongoose(节点:5983) UnhandledPromiseRejectionWarning:未处理的承诺拒绝 (拒绝id:1):TypeError:无法读取属性'然后'未定义的 (节点:5983)[DEP0018]弃用警告:未处理的承诺拒绝 不推荐使用。在未来,承诺拒绝未处理 将使用非零退出代码终止Node.js进程。
如何获取有用的调试信息,以便我不必猜出确切的问题在哪里?
我相信它就在这个文件的某个地方:
const mongoose = require('mongoose');
const helper = require('../config/helper');
const schema = require('./Schemas')
mongoose.connect(helper.getMongoose()).then(
() => {
console.log('DEBUG: Mongoose connected')
mongooseConnected();
},
(err) => {
console.log('DEBUG: Mongoose did not connect')
}
);
function mongooseConnected () {
makeSchema( schema.User,
{ id_google: '1',
type: 'person',
timestamp: Date.now()
});
}
function makeSchema (Schema, dataObj) {
const Class = mongoose.model('Class', Schema);
const Instance = new Class(dataObj);
Instance.save((err, results)=>{
if (err) {
return console.error(err);
}
}).then(() => {
console.log('Saved Successfully')
});
}
答案 0 :(得分:0)
在您的情况下,您正在为保存功能提供回调,这样mongoose就不会返回Promise:
SELECT * FROM userTable WHERE UPPER(column) LIKE UPPER('%this_is_a_hard_coded_string%')
如果您仍想使用Promise,则不必传递回调函数:
gcloud init
答案 1 :(得分:0)
通常,未处理的Promise拒绝意味着您缺少一个处理错误的catch方法。在返回承诺后简单地包括.then()
只会在成功运行时处理代码,而包括.catch
块将跳过.then
并仅运行.catch
,错误为执行返回promise的代码时发生错误时的回调。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch
myModel.save()
.then(() => {
console.log('Saved');
})
.catch(err => {
console.log(err);
}