Using NodeJS with MongoDB+Mongoose.
First of all, I know the advantages of async non-blocking code. So I do deal with callbacks. But finally I faced the following proble
This is a very bad practice, you should never use timers to control the flow of the code.
The problem here is called atomicity. If you need to do find-save, find-save then you need to pack these operations somehow (transaction). It depends on the software you use. In redis you have the multi and exec commands. In mongodb you have findAndModify(). Another solution is to use an index. When you try to save the same field twice you get an error. Use the attributes, "index: true" and "unique: true" in the schemaType in mongoose:
var schema = mongoose.Schema ({
myField: { type: String, index: true, unique: true, required: true },
});
This is what you need: Mongodb - Isolate sequence of operations - Perform Two Phase Commits. But take into account that mongodb could not be the best choice if you need to do a lot of transactions.