Как уже указывалось, вы пытаетесь создать реляционную базу данных из какой-либо реляционной базы данных, которую вы действительно не хотите делать, но в любом случае, если у вас есть случай, когда вы должны это сделать, это решение, которое вы можете использовать , Сначала мы делаем поиск foreach в коллекции A (или в вашем случае пользователей), и затем мы получаем каждый элемент как объект, тогда мы используем свойство объекта (в вашем случае uid) для поиска в нашей второй коллекции (в ваших комментариях к случаю), если мы может найти его, тогда у нас есть совпадение, и мы можем печатать или что-то делать с ним. Надеюсь, это поможет вам и удачи:)
db.users.find().forEach(
function (object) {
var commonInBoth=db.comments.findOne({ "uid": object.uid} );
if (commonInBoth != null) {
printjson(commonInBoth) ;
printjson(object) ;
}else {
// did not match so we don't care in this case
}
});
Это невозможно.
Я думал об использовании CRTP (Curious Recurring Template Pattern), который теоретически можно использовать, если вы можете изменить один из классов и справиться с его ограничениями. Но в вашем случае это не сработает, поскольку ReactItem не является производным напрямую от QQuickItem, а от QQuickPaintedItem.
Предположим, что это не так:
ReactItem нужно изменить, чтобы он выглядел так:
template <class T> class ReactItem : public T {/*...*/};
Класс hiearchy будет выглядеть так: ]
Ограничения этого подхода в том, что два экземпляра ReactItem являются несвязанными типами в отношении иерархии типов. Это означает, что большая часть кода, ранее ссылающегося на ReactItem
, может нуждаться в изменении.
Это довольно легко сделать для функций:
void f(ReactItem* item) { item->setVisible(true); }
// becomes
template<class T> void f(ReactItem<T>* item) { item->setVisible(true); }
Это намного сложнее для шаблонных элементов данных, таких как std::vector<ReactItem*>
.