我正在 Node.js 中设置一个数据库包,并且不希望有单独的函数来写入数据库,如下所示:
write(key, val)
和 write({key: val, key2: val2})
。我在 Stack Overflow 和其他网站上看到过其他解决方案,并且希望拥有最简单的解决方案,以便我的函数能够“知道”它是键、val 对还是 JSON 对象。例如:
if (argtype == "kvp") { // key val pair
databaseJSON[key] = val;
flushToDB(databaseJSON);
} else {
let j = databaseJSON;
for (let i in Object.values(obj)) j[Object.keys(obj)[i]] = Object.values(obj)[i];
flushToDB(databaseJSON);
}
谢谢!
最佳答案
如果传递两个参数,只需将 val
分配给数据库的 key
属性,否则 Object.assign
将一个参数分配给数据库,以将传递的对象中的所有属性和值放入数据库:
function write(key, val) {
if (val !== undefined) {
database[key] = val;
} else {
Object.assign(database, key);
}
flushToDB(database)
}
const database = {};
const flushToDB = db => console.log('flushing');
function write(key, val) {
if (val !== undefined) {
database[key] = val;
} else {
Object.assign(database, key);
}
flushToDB(database)
}
write('key', 'val');
console.log('db:', database);
write({ key2: 'val2', key3: 'val3' });
console.log('db:', database);
因为这里的数据库是一个普通对象,而不是 JSON(JSON 格式的东西是一个字符串,但这里不是这样),所以最好将其称为 database
而不是 databaseJSON
。 (参见There's no such thing as a "JSON Object")
关于javascript - 你能有多种方法来运行 Javascript 中的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57548614/