나는 내 mongodb에서 빠르게 증가하는 콜렉션을 가지고있다. 새 문서가 컬렉션에 삽입되면 특정 작업을 수행하려고합니다. 그런 새로운 모델을 삽입했을 때 어떻게 행동을 관찰하고 트리거 할 수 있습니까?MongoDB + ExpressJS - 삽입 관찰
나는 mongo-observer과 같은 오래된 솔루션을 발견했지만 꽤 오래되어서 나에게 도움이되지 못했습니다.
누구나 비교적 새롭고 유지 보수가 잘되는 솔루션을 추천 할 수 있습니까?
나는 내 mongodb에서 빠르게 증가하는 콜렉션을 가지고있다. 새 문서가 컬렉션에 삽입되면 특정 작업을 수행하려고합니다. 그런 새로운 모델을 삽입했을 때 어떻게 행동을 관찰하고 트리거 할 수 있습니까?MongoDB + ExpressJS - 삽입 관찰
나는 mongo-observer과 같은 오래된 솔루션을 발견했지만 꽤 오래되어서 나에게 도움이되지 못했습니다.
누구나 비교적 새롭고 유지 보수가 잘되는 솔루션을 추천 할 수 있습니까?
npm 모듈 - mongohooks을 참조 할 수 있습니다.
업데이트 :
추가 샘플 코드 :
const db = require('mongojs')('mydb', ['members']); // load mongojs as normal
const mongohooks = require('mongohooks');
// Add a `createdAt` timestamp to all new documents
mongohooks(db.members).save(function (document, next) {
document.createdAt = new Date();
next();
});
// Now just use the reqular mongojs API
db.members.save({ name: "Thomas" }, function (error, result) {
console.log("Created %s at %s", result.name, result.createdAt);
});
schema.pre() 후크 그것을 할 것입니다. 예 : 그들은 자기 의견을 고집 답변 스팸을 유치하는 경향이
export const schema = new mongoose.Schema({
name: String,
username: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true
}
}, { timestamps: { createdAt: "created_at", updatedAt: "updated_at" }
});
schema.pre("save", function (next) {
bcrypt.hash(this.password, 10, (err, hash) => {
this.password = hash;
next();
});
});
schema.pre("update", function (next) {
bcrypt.hash(this.password, 10, (err, hash) => {
this.password = hash;
next();
});
});
해당 스키마에 대량 작업을 수행하기위한 사전/사후 훅이 있습니까? – phoebus
[pre and post hooks] (http://mongoosejs.com/docs/middleware.html)는 변경된 모든 문서에 대해 작동하므로 대량 작업에도 사용할 수 있습니다. 전체 컬렉션을 위해 무언가를 변경하려면 [migrate] (https://www.npmjs.com/package/migrate)와 같은 것을 찾고있을 것입니다. –
제 경우에는 마이그레이션 할 필요가 없습니다. 데이터베이스에 개체를 대량 업로드하고 있습니다. 그리고 그 중 하나가 upserted 때마다, 나는 또 다른 행동을 시작하고 싶다. post "save"와 "update"그리고 많은 다른 것들은 bulk.find(). upsert(). update()를 사용할 때 불행히도 트리거되지 않습니다. – phoebus
질문 ** ** 오프 주제 스택 오버플로에있는 책, 도구, 소프트웨어 라이브러리, 자습서 또는 다른 오프 사이트 리소스를 권장하거나 찾기 위해 우리를 요청 . 대신, [문제 설명] (http://meta.stackoverflow.com/questions/254393) 및 지금까지 해결 된 사항은 무엇입니까? –