Dealing with NodeJS asynchronous behavior

前端 未结 2 677
青春惊慌失措
青春惊慌失措 2021-01-22 03:28

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

2条回答
  •  谎友^
    谎友^ (楼主)
    2021-01-22 04:03

    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.

提交回复
热议问题