In the last two blog posts, you have been introduced to the PouchDB NoSQL database. You learned to create a new database, modify documents within that database, and retrieve documents using the allDocs(). Now that you have inserted several documents into your PouchDB database, you might wish to retrieve documents based on data in fields other than the _id property. In this third part of our on-going blog posts on PouchDB, you learn to use the find() plug-in to perform queries on any property in your documents.
Sometimes, you may need to upload files to your server via an Angular application. There are a few different methods you may use. Today, I am going to present a method that works well for small files up to about two megabytes in size. In this blog, you build two projects: a .NET Core Web API project and an Angular project. You build these two projects from scratch using the Angular CLI, .NET Core, and Visual Studio Code editor.
When your business needs help with IT, it can be difficult to find the right fix. Technology talent is tough to find, and the best people always seem to be taken. Consider hiring a software development consultancy rather than going through an expensive, time-consuming hiring process that doesn’t guarantee you the candidate you want. Weigh the benefits against the potential drawbacks to decide what’s right for your company.
Doing soft deletes is a very common requirement or preference used in software development and it has many benefits including the main one of not accidentally losing data since it is never actually deleted from the database. The main approach to doing this is to add an IsDeleted flag to the database table and setting that to true instead of doing a hard delete. Simple enough and it works pretty well. The annoying part of using this approach comes when you have to add !IsDeleted to every single query you run against each table where you have implemented soft-deletes. Casey, a fellow Fairway-er (or Fairway-ian, Fairway-ite, ???) pointed this out as we started working on a new project. So we decided to treat this as a cross-cutting concern and implement it as an attribute that we can apply to the entities that we want to be soft-deleted. While we are still early on in using this new approach, so far so good.
A little while back I noticed that a GitHub user had forked SharpRepository and added some simple hooks into it in order to automatically index entities into Lucene when they are added, updated or deleted through SharpRepository. This was such a good idea that I knew we needed to get some proper hooks into the library itself. We decided to use an Aspect Oriented Programming approach and allow developers to decorate their entities with attributes that would hook into the proper part of SharpRepository to give them the controls they need.
I'm at a point in my project where I need to look up stuff. No doubt you're saying something like "Duh - programs need to look up stuff all the time, dummy! THAT'S NOT SPECIAL! TELL ME SOMETHING INTERESTING!"
Two developers. One Backbone tutorial. One of us is an avid hockey fan. The other is a bit of a sci-fi/fantasy nerd. Therefore, it only makes sense that the app we'll be building is a fantasy hockey league website during this tutorial series. Because seriously - who doesn't want to see Darth Vader vs. Sauron on the ice? An epic seven game series of elves of Lothlorien vs. stormtroopers of the Death Star? Yes, please. I'm sure there's a "one puck to rule them all" joke in here somewhere. I'll leave that exercise to you, dear reader.
A while back, I worked on a project that required persisting data to multiple databases. The requirement was to save some data to a Microsoft SQL Server (which hosted the billing application data) and save a different set of data to an Oracle database (which housed the database for the flagship Online Transaction Processing [OLTP] system). Both of the database servers were protected by the almighty firewall, valiantly protecting the valuable database servers from a variety of virulent violations.
Ailing attempts at alliteration aside, here’s a high-level diagram describing the application I’m talking about: