是否有正确的方法可以删除第一个或第二个集合?
我觉得它是第二个,但第一个更容易使用。是否可以使用promise来简化代码的读取?
第一种方式:
beforeEach((done) => {
//Before each test we empty the database
//Remove Roles
Role.remove({}, (err) => {});
//Remove Users
User.remove({}, (err) => {});
// Remove Workouts
Workout.remove({}, (err) => {});
// Create user
Role.create({"name" : "Administrator"},(err, adminRole) => {
User.create({ firstname : "***", businessId: "1", lastname : "***", email : "***", roles:[adminRole]}, (err) => {
done();
});
});
});`
第二种方式:
beforeEach((done) => {
//Before each test we empty the database
//Remove Roles
Role.remove({}, (err) => {
//Remove Users
User.remove({}, (err) => {
// Remove Workouts
Workout.remove({}, (err) => {
// Create user
Role.create({"name" : "Administrator"},(err, adminRole) => {
User.create({ firstname : "***", businessId: "1", lastname : "***", email : "***", roles:[adminRole]}, (err) => {
done();
});
});
});
});
});
});
答案 0 :(得分:2)
第二个选项是最安全的选项,因为如果操作中发生错误,则不会执行下一个选项。
确定你应该使用承诺。代码变得更清洁了:
Role.remove({})
.then(() => User.remove({})
.then(() => Workout.remove({})
.then(() => Role.create({"name" : "Administrator"})
.then((adminRole) => User.create({ firstname : "***", businessId: "1", lastname : "***", email : "***", roles:[adminRole]})
.then(() => done())
.catch((error) => ...);
为了能够使用promises,您可以将mongoose的promise
设置为本机(只要您的节点版本是> = 6):
mongoose.Promise = global.Promise;