javascript - 你能有多种方法来运行 Javascript 中的函数吗?

标签 javascript node.js

我正在 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/

相关文章:

javascript - 如何获取页面第一次绘制的时间

javascript - 使用 NodeJS 复制文件

javascript - 为什么 Winstonjs ExceptionHandler 会消除我的 Node 错误?

node.js - 为什么 HTML WebSocket 访问 Socket.io web socket 服务器失败?

javascript - jQuery Featherlight 包含来自 api 的内容,第二次单击时加载

javascript - jQuery BlockUI 不阻止 <select>

javascript - 在 JavaScript 中打开新的浏览器窗口而不使其处于事件状态

javascript - 计算数组内集合中文档的数量

node.js - 如何将 Bower init 运行到 gulpfile 中?

javascript - 获取 HTML 页面调用的 PHP 文件中 HTML 页面的目录