我有以下代码:
while (bson_iter_next(&iter))
{
const char* key = bson_iter_key(&iter);
if (!_paths.count(key))
{
_template->SetAccessor(
String::NewFromUtf8(isolate, key),
&BSONObject::getter,
&BSONObject::setter
);
}
}
Local<Object> obj = _template->NewInstance();
我用文档BSON中的所有字段构建一个对象。我有一份文件清单,所有文件都经过此代码。我意识到,如果第一个字段没有其他字段,则不会定义它们。我解释:
BSON 1 : {foo: 3}
BSON 2 : {foo: 2, boo: 4}
当我在JS中使用我的吸气剂时,他会告诉我:
BSON 1 : {foo: 3}
BSON 2 : {foo: 2}
如何添加此字段的访问器?
答案 0 :(得分:1)
对于具有不同数量属性的对象,请勿使用相同的ObjectTemplate
。
我可以想到两种选择;哪个更好取决于您应用程序的其余部分:
每次都创建一个新的Object
,然后直接在该SetAccessor
上调用CreateDataProperty
(或Object
?)。不需要ObjectTemplate
。
在SetHandler
上使用ObjectTemplate
安装一个可拦截所有属性查询的处理程序。