tak, potrzebujesz lepszego blokowania na houseModel, aby wskazać, że addItem jest w toku.
Problem polega na tym, że wiele żądań może wywołać findById i zobaczyć ten sam dom.items.length, a następnie każde z nich określa na podstawie tej (nieaktualnej) migawki, że można dodać jeszcze jeden element. Granica atomowości węzła nodej to callback; między połączeniem asynchronicznym a jego wywołaniem zwrotnym, inne żądania mogą być uruchamiane.
Jednym z łatwych rozwiązań jest śledzenie nie tylko liczby przedmiotów w domu, ale także liczby zamierzonych elementów dodanych. Po wejściu do addItem zwiększ liczbę „chcę dodać więcej” i przetestuj to.