{{1}}
为什么save()回调函数永远不会运行?我的意思是,"测试"文字没有显示,而"示例"就像它应该创建(我的意思是,当我打印它,它看起来没问题)。 有任何想法吗? TIA
答案 0 :(得分:1)
Mongoose async save()函数与函数一起使用,这意味着你不需要传递一个回调函数,而是使用then / catch模式:
const Data = require('./Models/Data');
...
let example = new Data( sample );
example.save()
.then(() => {
console.log('test);
})
.catch((err) => {
console.log('Error saving Data. 'Error: ', err);
});
查看更多here
答案 1 :(得分:0)
正如Nir Levy已经说过:当时的电话可以是保存文件的另一种方式。 您还可以尝试在save的回调中提供第二个参数:
example.save((err, doc) => {
console.log('test');
if (err) {
console.log('Error while saving data: ', err);
} else {
console.log('document is: ', doc);
}
});
另请注意,您错过了example.save回调中的console.log()上的结束引号
您是否还可以确保您的mongodb服务器正在运行并且您已连接到mongodb服务器?如果这可能导致问题?
答案 2 :(得分:0)
这通常在您未连接到数据库时发生。您可以创建模型对象,但是在数据库上运行的Mongoose函数都不起作用。他们默默地失败了。确保连接connect功能。您还可以侦听连接和错误事件,以确定您实际上已连接:
$scope.getCarsTableColumnDefinition = function() {
return [
{
columnHeaderDisplayName: 'Model',
displayProperty: 'name',
sortKey: 'name',
columnSearchProperty: 'name',
visible: $scope.visibleProperty
},
...];
};
启动应用程序并注意 Mongoose已连接时,请注意终端。最后,您可以打开Mongoose中的调试模式,看看幕后实际发生了什么:
const dburl = `mongodb://localhost/testdb`;
mongoose.connect(dburl, { useMongoClient: true });
mongoose.connection.on('connected', () => { console.log(`Mongoose connected to ${dburl}`); });
mongoose.connection.on('error', (err) => { console.log(`Mongoose connection error: ${err}`); });
mongoose.connection.on('disconnected', () => { console.log('Mongoose disconnected'); });
例如,您可以在连接呼叫的正下方添加它。
顺便说一下,你不必使用promise方法。您可以使用已经使用的回调版本。只需确保使用console.log中缺少的'更正错误。