Я столкнулся с неожиданно неприятной проблемой. Вроде знаю как работать с обьектами а вроде хочу сделать это красиво и удобно что бы потом не возвращаться к этому вопросу.
У меня есть Schema для работы с MongoDB через Mongoose. Юзер сможет заполнять свою информацию в любой момент и в любом порядке. Так есть что бы подтвердить заявку нужно заполнить все поля но база будет хранить и не завершенные запросы для удобности пользователей.
Для этого я добавил еще один массив обьектов который будет служить:
Проблема в том, что если просто сделать обьект с обьектами я не знаю как удобно запрашивать информацию по индексу И полю. Так есть мне нужно что бы было возможно запросить информацию про каждое поле типа:
Эй, скажи мне что такое name
.
Пожалуйста: Your name
А что под номером 3?
field: "age"
Покажи мне список полей с важностью 1.
1: {field: "name", type: "String", description: "Your name", rank: 1},
2: {field: "nickname", type: "String", description: "Nickname that will be shown to others", rank: 1}
Пример списка:
1: {field: "name", type: "String", description: "Your name", rank: 1},
2: {field: "nickname", type: "String", description: "Nickname that will be shown to others", rank: 1},
3: {field: "age", type: "Number", description: "Your age", rank: 2},
Даже учитывая что можно заполнять в любом порядке важно иметь очередность полей что бы можно было пройтись по всем полям по порядку тем же for
или each
.
По-моему мой запрос выходит похож на что-то подобное базе данных, возможно локальной, а возможно мне стоило бы добавить эту информацию в БД? Я не уверен можно ли добавить подобную статическую информацию в схему, так что было бы интересно увидеть. Или обьясните мне чего я не понимаю, почему это так сложно понять для меня.
Спасибо за внимание, я уже не 1 час сижу пытаюсь понять что делать. Нашел Map()
, который работает только для ключа и строки, не сильно полезно, а так же библиотеки collection.js и Buckets JS которые выглядят неплохо, но я побаиваюсь использовать библиотеку для одного лишь списка. А так же JS базы данных: PouchDB и TaffyDB. Первая очень красивая, но у меня чувство что слишком большая для поставленной задачи. Вторая тоже предназначена для куда больших целей чем нужно. Может я не прав, хотелось бы тогда услышать почему.
TaffyDB
Функционал почти как у обычных SQL поддерживает (CRUD), упрощенная выборка и обновление.
// Create DB and fill it with records
var friends = TAFFY([{
"id": 1,
"gender": "M",
"first": "John",
"last": "Smith",
"city": "Seattle, WA",
"status": "Active"
},
{
"id": 2,
"gender": "F",
"first": "Kelly",
"last": "Ruth",
"city": "Dallas, TX",
"status": "Active"
},
{
"id": 3,
"gender": "M",
"first": "Jeff",
"last": "Stevenson",
"city": "Washington, D.C.",
"status": "Active"
},
{
"id": 4,
"gender": "F",
"first": "Jennifer",
"last": "Gill",
"city": "Seattle, WA",
"status": "Active"
}
]);
// Find John Smith, by ID
var id = friends({
id: 1
});
console.log(id.first().first);
// Get an array of record ids
var cities = friends().select("id");
console.log(cities);
<script src="https://cdnjs.cloudflare.com/ajax/libs/taffydb/2.7.3/taffy-min.js"></script>
Реально проще уже некуда и мало весит.
var cities = TAFFY([{
name: "New York",
state: "WA"
}, {
name: "Las Vegas",
state: "NV"
}, {
name: "Boston",
state: "MA"
}]);
cities.insert({
name: "Portland",
state: "OR"
});
console.log(cities({
name: "Boston"
}).count());
<script src="https://cdnjs.cloudflare.com/ajax/libs/taffydb/2.7.3/taffy-min.js"></script>
PouchDB
Эта будет мощнее синхронизация с локальными и удаленными базами. Непрерывная работа с пользователем и ошибки на сервере её не пугают, сохраняет то что делал юзер и только когда может послать на сервер посылает, отказоустойчива.
//----------------------------------------------------------------
// Немного не так легко как с TaffyDB если нет удаленной базы,
// с другой стороны легко синхронизируется с сервером
//----------------------------------------------------------------
var db = new PouchDB('databaseName');
db.put(data)
.then(res => {
console.log(res); /* handling result */
})
.catch(err => {
console.log(err); /* errors handling */
});
db.remove(data)
.then(response => { /* handling result */ })
.catch(err => { /* errors handling */ });
db.get(data)
.then(doc => { /* do something with document */ })
.catch(err => { /* errors handling */ });
console.log(db.info());
<script src="https://cdnjs.cloudflare.com/ajax/libs/pouchdb/7.0.0/pouchdb.min.js"></script>
Можно почитать тут
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Функция возвращает если число нечетное, средний символ строки, а если четное, то средние два символаА если в строке один символ, то возвращает...
В старых версиях IE не работает js кодПытаюсь работать через babel
Чтобы не возникало лишних вопросов, и не было предложений, которые не решают вопросаИзменил примеры на оригинал
есть поле <td class="left"><input type="text" class="packed" placeholder="<?php echo $text_provider_enter?>"></td> в него вносятся данные с помощью сканера и они оправляются...