Javascript mongoose保存卡滞(从未调用回调)
我试图将mongoose对象保存到db,但它不起作用(没有保存任何内容,也没有返回回调)。数据库是开放的,并且有一个成功的连接(集合甚至是根据模型创建的,并对其进行索引) 我的模式:Javascript mongoose保存卡滞(从未调用回调),javascript,node.js,mongodb,mongoose,save,Javascript,Node.js,Mongodb,Mongoose,Save,我试图将mongoose对象保存到db,但它不起作用(没有保存任何内容,也没有返回回调)。数据库是开放的,并且有一个成功的连接(集合甚至是根据模型创建的,并对其进行索引) 我的模式: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var CourseSchema = new Schema({ providerId: {type: String, required: true, unique: true},
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var CourseSchema = new Schema({
providerId: {type: String, required: true, unique: true},
from: {
provider: {type: String, required: true},
creators: [String]
},
name: {type: String, required: true},
link: {type: String, required: true},
textualInfo:{
summery: String,
longDescription: String,
syllabus: String,
subjects: [String]
},
media: {
image: String,
trailer: String
},
meta:{
languages: [String],
level: Number,
workload: String,
duration: String,
prerequirments: String,
priceDollars: Number,
enrollments: Number,
},
dateCreated: {type: Date, default: Date.now},
dateLocalModified: {type: Date},
queries: [String]
});
CourseSchema.index({
'from.provider': 'text',
'from.creators': 'text',
'name': 'text',
'textualInfo.summery': 'text',
'textualInfo.longDescription': 'text',
'textualInfo.syllabus': 'text',
'textualInfo.subjects': 'text'
},{
name: 'search index', weights: {
'from.provider': 120,
'from.creators': 120,
'name': 150,
'textualInfo.summery': 20,
'textualInfo.longDescription': 2,
'textualInfo.syllabus': 1,
'textualInfo.subjects': 20
}});
CourseSchema.pre('save', function(next) {
var course = this;
course.dateLocalModified = new Date();
if(!course.isModified('providerId')) return next();
if(!(/@/.test(course.providerId))){
course.providerId = course.providerId + '@' + course.from.provider;
}
});
var Course = mongoose.model('Course', CourseSchema);
module.exports = Course;
插入测试代码:
var Course = require('./course');
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/mydb',{
server: {socketOptions: { keepAlive: 1 }},
replset: {socketOptions: { keepAlive: 1 }}
});
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
console.log('mongoose is connected to db');
var course = new Course({
providerId: 'pid123',
from: {
provider: 'test',
creators: ['creators']
},
name: 'test course',
link: 'http://testlink.com',
textualInfo:{
summery: 'c.shortDescription',
longDescription: 'c.aboutTheCourse',
syllabus: 'c.courseSyllabus',
subjects: ['subjNames'],
},
media: {
image: 'c.photo',
trailer: "https://www.youtube.com/watch?v="
},
meta:{
languages: [],
level: 0,
workload: 'c.estimatedClassWorkload',
duration: "",
prerequirments: 'c.recommendedBackground',
priceDollars: 0,
enrollments: 0,
},
queries: []
});
console.log('trying to save:', course.name);
course.save(function(err){
console.log(err);
db.close();
});
});
db.on('disconnected', function () {
console.log('Mongoose default connection disconnected');
});
谢谢你的帮助 这是亡灵术:D,但也许它会帮助某些人。 我认为问题在于“预保存”功能 它只在一个if中返回回调。如果您不进入,则不会调用回调 添加
return next();
在“CourseSchema.pre('save',function(next)”的末尾,应该会为您解决这个问题。这是亡灵术:D,但可能会帮助某些人。 我认为问题在于“预保存”功能 它只在一个if中返回回调。如果不进入if,则从不调用回调 添加
return next();
在“CourseSchema.pre('save',function(next)”的末尾,应该可以为您解决这个问题。您解决了吗?我有同样的问题:(@pietro909我停止使用mongodb:)您解决了吗?我有同样的问题:(@pietro909我停止使用mongodb:)