Этот код TypeScript
class A {
private a1;
public a2;
}
компилируется в этот код JavaScript
class A {
}
Это связано с тем, что свойства в JavaScript начинаются только после того, как они имеют некоторое значение. Вы должны назначить свойства некоторым значениям.
class A {
private a1 = "";
public a2 = "";
}
он компилируется в
class A {
constructor() {
this.a1 = "";
this.a2 = "";
}
}
Тем не менее вы не можете получить свойства из простого класса (вы можете получить только методы из прототипа ). Вы должны создать экземпляр. Затем вы получите свойства, вызвав Object.getOwnPropertyNames()
.
let a = new A();
let array = return Object.getOwnPropertyNames(a);
array[0] === "a1";
array[1] === "a2";
class Describer {
static describe(instance): Array<string> {
return Object.getOwnPropertyNames(instance);
}
}
let a = new A();
let x = Describer.describe(a);
Возможно, что-то вроде этого, где ID - ваш ObjectId. Первый {} необходим для идентификации вашего документа. Не требуется использовать ObjectId, если у вас есть еще один уникальный идентификатор в вашей коллекции.
db.collection.update(
{ "_id": ID, "playlists._id": "58"},
{ "$push":
{"playlists.$.musics":
{
"name": "test name",
"duration": "4.00"
}
}
}
)