node.js / mongoDB - 如何在客户端和Web服务器

时间:2016-01-10 05:56:03

标签: node.js mongodb

使用Node.js 4.2.4和mongoDB 3.2

关注点分离 - 保持客户端与mongoDB分离

问题:

我习惯于从服务器发送id作为字符串并从客户端将其作为字符串读回来 - 但是使用mongoDB使用ObjectID我会因为逻辑而感到困惑似乎 - 保持客户端与数据库分离 - 需要在ObjectIDs上完成转换,并且在客户端和服务器之间来回穿梭时会有字符串对应物。

澄清问题:

1)当数据从客户端发出时,我假设使用ObjectID将UI交互映射到数据(例如,用户点击帖子)是很常见的。这样做时,我是否需要将ObjectID转换为字符串,因为它们转到客户端并在返回到服务器端时将它们转发回ObjectID?

2)所有密钥生成和转换(如果需要)都应该在服务器端发生吗?(与节点服务器或数据库和Web服务器之间的层相结合)

2 个答案:

答案 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")}