若不存在则插入,存在则更新,如何实现?
发布于 12 年前 作者 supersheep 3206 次浏览 最后一次编辑是 8 年前

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

用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 "\"");
});
});
回到顶部