若不存在则插入,存在则更新,如何实现?
发布于 2年前 作者 supersheep 829 次浏览

需要更新的列表长度未知。 其他语言的话一个循环同步的写下来,非常容易。

用node写异步的就觉得比较忧伤了,我给出自己的做法,也看看大家遇到这样的需求是怎么做的。

var list = ["a", "b", "c"];
var tasks = [];
var result;

list.forEach(function(item) {
    tasks.push(function() {
            var qs = "select * from table where name=\"" + item + "\"";
        db.query(qs, function(err, rows) {
            var flag;
            if(err) {
                throw err;
            }
            if(rows[0]) {
                flag = true;
            } else {
                flag = false;
            };
            result = {
                name: name,
                flag: flag
            };
        }
        done();
        })
    });
tasks.push(function(done) {
    if(result.flag) {
            qs = "update table set name=\"" + result.name + "\" where id=" + result.id;
    } else {
        db.query("insert into table set name=\"" + result.name "\"");
    }
db.query("insert into table set name=\"" + result.name "\"");
});
});
回到顶部