非常简单的代码,却让我绞尽脑汁几个小时?所以正如您在 add
函数中看到的那样,它基本上需要 2 个参数; IP 地址和 UNIX 日期
const redis = require("redis"), client = redis.createClient();
const {promisify} = require('util');
const getAsync = promisify(client.get).bind(client);
const setAsync = promisify(client.set).bind(client);
_ = require('lodash');
_weg = require('wegweg')({
globals: false
});
module.exports = {
add: async function (ip, cday) {
var key = _weg.md5('dact:' + ip);
return await getAsync(key).then((result) => {
let value;
if (result == null) {
value = [];
} else {
value = result;
}
value = value.unshift(cday);
value = _.uniq(value);
return setAsync(key, value);
});
}
};
所以如果我继续并通过两个:
await ping_history.add("127.0.0.1", 1562774400);
好像不是插入数组什么的? key
应该是一个 MD5 & value
应该只是一个唯一的日期数组。
最佳答案
unshift
方法就地修改数组,它不返回新数组。 unshift
的返回值是数组的新长度。所以之后
value = value.unshift(cday);
value
变量现在包含一个数字,而不是数组。
value = [1, 2, 3, 4];
value = value.unshift(10);
console.log(value);
随便写
value.unshift(cday);
无需重新分配变量。
关于javascript - 简单的 unshift 和 unique 不适用于 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56979167/