使用Node.js 4.2.4和mongoDB 3.2
关注点分离 - 保持客户端与mongoDB分离
问题:
我习惯于从服务器发送id作为字符串并从客户端将其作为字符串读回来 - 但是使用mongoDB使用ObjectID我会因为逻辑而感到困惑似乎 - 保持客户端与数据库分离 - 需要在ObjectIDs上完成转换,并且在客户端和服务器之间来回穿梭时会有字符串对应物。
澄清问题:
1)当数据从客户端发出时,我假设使用ObjectID将UI交互映射到数据(例如,用户点击帖子)是很常见的。这样做时,我是否需要将ObjectID转换为字符串,因为它们转到客户端并在返回到服务器端时将它们转发回ObjectID?
2)所有密钥生成和转换(如果需要)都应该在服务器端发生吗?(与节点服务器或数据库和Web服务器之间的层相结合)
答案 0 :(得分:1)
1)是的。
2)是的。
当您需要查询数据库时,可以将ObjectId
强制转换为字符串进行传输(通常为JSON)并返回{{1}}。客户端只需要知道它代表一个对象的任意字符串。
答案 1 :(得分:0)
使用npm bson-util可能是将bson数据发送到客户端的正确方法。您也可以再次将客户端中的数据解析为bson。
import {parse, stringify} from 'bson-util';
let a = {b: new ObjectID()};
stringify(a);
// {"b":{"$oid":"5e32849068f40e424a80fe42"}}
parse('{"b":{"$oid":"5e32849068f40e424a80fe42"}}');
// {b: ObjectID("5e32849068f40e424a80fe42")}