Я использую следующую средуВставка частных переменных объекта MongoDB
NodeJS: 5.7.1
Монго DB: 3.2.3
MongoDB (NodeJS Driver): 2.1.18
Тип текста: 1.8
Я создал объект с использованием типов cript в
class User {
private _name:string;
private _email:string;
public get name():string{
return this._name;
}
public set name(val:string){
this._name = val;
}
public get email():string{
return this._email;
}
public set email(val:string){
this._email = val;
}
}
Использование драйвера MongoDB API, я пытаюсь вставить объект как
var user:User = new User();
user.name = "Foo";
user.email = "[email protected]";
db.collection('users').insertOne(user)
.then(function(r){..}).catch(function(e){..});
Когда я запрос от Монго консоли, чтобы проверить значения, вставленные, используя db.users.find({}).pretty();
это дает меня следующий выход.
{
"_name":"Foo",
"_email":"[email protected]",
"name":"Foo",
"email":"[email protected]"
}
Почему частные переменные хранятся? Как я могу помешать ему хранить частные переменные.
EDIT: 1 Поскольку я не мог прекратить разработку приложения, я использовал обходное решение на данный момент. Объект домена теперь имеет дополнительный метод toJSON
, который предоставляет структуру, которую я хочу сохранить в MongoDB. , например.
public toJSON():any{
return {
"name":this.name
...//Rest of the properties.
};
}
Я звоню toJSON()
на сложенном объекте.
Частная переменная совпадает с общедоступными переменными при компиляции в js по причине производительности. http://stackoverflow.com/questions/12713659/typescript-private-members – Zen
Итак, каков рекомендуемый подход для вставки только общедоступных переменных? – CuriousMind