Этот ответ уменьшает стоимость инструкции trycatch.
blockquote>Я использовал JQuery для разбора строк JSON, и я использовал оператор trycatch для обработки исключений, но бросая исключения для un-parsable строки замедляли мой код, поэтому я использовал простое Regex, чтобы проверить строку, если это возможная строка JSON или нет, не выходя из пера, проверив ее синтаксис, затем я использовал обычный способ, анализируя строку с помощью JQuery:
if (typeof jsonData == 'string') { if (! /^[\[|\{](\s|.*|\w)*[\]|\}]$/.test(jsonData)) { return jsonData; } } try { jsonData = $.parseJSON(jsonData); } catch (e) { }
Я завернул предыдущий код в рекурсивной функции для синтаксического анализа вложенных ответов JSON.
blockquote>
Это один из основных вариантов использования промежуточного программного обеспечения Mongoose 'remove'
.
clientSchema.pre('remove', function(next) {
// 'this' is the client being removed. Provide callbacks here if you want
// to be notified of the calls' result.
Sweepstakes.remove({client_id: this._id}).exec();
Submission.remove({client_id: this._id}).exec();
next();
});
Таким образом, когда вы вызываете client.remove()
, это промежуточное программное обеспечение автоматически вызывается очистить зависимости.
Другим способом я нашел
submissionSchema.pre('remove', function(next) {
this.model('Client').remove({ submission_ids: this._id }, next);
next();
});
Если ваши ссылки хранятся иначе, скажем, client
имеет массив из submission_ids
, то аналогично принятому ответу вы можете определить следующее на submissionSchema
:
submissionSchema.pre('remove', function(next) {
Client.update(
{ submission_ids : this._id},
{ $pull: { submission_ids: this._id } },
{ multi: true }) //if reference exists in multiple documents
.exec();
next();
});
, который удалит идентификатор отправки из ссылочных массивов клиентов в submission.remove()
.
submission_ids
для C1 и C3 (OneToMany, то есть у Клиента много представлений). Мой ответ выше описывает сценарий, в котором вы хотите удалить S273. Когда вы это сделаете, идентификатор S273 будет удален из submission_ids
как C1, так и C3.
– Talha Awan
14 February 2018 в 20:30
submissionSchema
является дочерней коллекцией, на которую ссылаются Client schema
вправо?
– Francis Rodrigues
14 February 2018 в 23:12
Schema
, который использовался для определения моделиClient
до создания модели с помощью вызоваmongoose.model
илиdb.model
. – JohnnyHK 16 January 2013 в 18:34remove
, когда вы не выполняете обратный вызов. Я обновил ответ. – JohnnyHK 16 January 2013 в 19:38remove
в экземпляре doc. – JohnnyHK 22 April 2015 в 12:46