У меня есть эта функция в файле A.js
exports.executeMethods = async function(_id) {
var customObject = new CustomObject(_id);
await customObject.someAction();
}
Это вызывается B.js при вставке нового документа.
exports.insertDocument = function(document) {
document.save(async function(err, document) { //let's say this document has _id = 1
if (err) {
//stuff
}
else {
A.executeMethods();
}
});
}
Мне нужен способ выполнить другой метод в том же самом объекте CustomObject при обновлении документа с _id = 1.
Одна вещь, которую я пробовал, это Change Streams, я написал еще одну функцию в B.js.
exports.watch_document = async function(_id) {
var changeStream = models.Task.watch(
[{
$match: {
_id: _id
}
}]
);
return await changeStream.next();
}
И я модифицировал executeMethods из A.js
exports.executeMethods = async function(_id) {
var customObject = new CustomObject(_id);
await customObject.someAction();
var res = await B.watch_document(_id);
if (//condition) {
await customObject.someOtherAction();
}
}
Но по какой-то причине changeStream.next is not defined, а также я не думаю, что это решение действительно эффективно, потому что мне пришлось создать replica set, чтобы попробовать это. Есть ли способ лучше? Если нет, то почему он не определен? У меня есть mongodb 4.0 с последней версией мангуста
Обновлено: я забыл упомянуть, что это приложение REST и что информация, необходимая перед вызовом someOtherAction(), должна быть предоставлена внешним пользователем.
@saikatchackrabortty Извините, но я не понимаю, чем они мне тут помогут





вы пробовали использовать хуки?