【发布时间】:2018-09-28 01:02:24
【问题描述】:
我有一个 NodeJS Express APP,我正在构建一个端点来更新条款和条件
http://127.0.0.1:3000/api/admin/info/terms/de?version=2
但是我要存储的文本太重了(文本有制表符、单引号和双引号等),并且需要大量编辑才能放置在json 正文 {"terms":"easy text"}。 {"terms": "沉重的 "text//"" 那 . "我不"希望"""editööäääÄÄ""}
处理此类文本的最佳方式是什么?转成二进制再发送?
我的端点
router.post('/terms/:language', async (req, res) => {
try {
const { language } = req.params;
const { version } = req.query;
const { terms } = req.body;
if (!version) return res.status(400).json({ message: 'Field "version" is empty' });
let info = await PageInfo.findOne({ $and: [{ version }, { language }] });
if (info) {
const update = await PageInfo.findOneAndUpdate({ version: { $eq: version } }, {
$set: {
version,
terms,
language
}
}, { new: true });
return res.status(200).json({ type: 'update', data: update });
}
info = await PageInfo.create({
version,
terms,
language,
});
return res.status(200).json({ type: 'new', data: info });
} catch (e) {
return res.sendStatus(500);
}
});
【问题讨论】:
-
如果文字很大,那就是巨大的。您可以将其压缩存储——当您至少可以一点点猜测文本的性质时,选择算法是最好的——但它的代价是必须一直压缩和解压缩.只有您才能知道它是否值得,因为我们不知道您应用的详细信息。
-
您应该问自己的是,您当前处理文本的方式是否真的遇到了性能问题?
-
你可以把它转换成base64。除非长度也是一个问题,不仅仅是字符。
-
是的,base64 似乎是个好主意,但是在转换它之后,发送带有 base64 数据的 POST req 并将其转换回文本我注意到一半的文本丢失了,一些字符也消失了。 .我也在转成UTF8格式。
标签: javascript node.js mongodb express