所以,我正在Node中构建一个类似博客的小项目,我遇到了孤立数据库引用的问题。我有两个模型在相互引用的单独文件中。
以下是我的模特:
// ./models/post
PostSchema.pre('remove', function(next){
this.model('User').remove({posts: this._id}, next);
});
我的问题是当你删除发帖,帖子时,你会如何删除用户帖子中的引用?我的想法是我可以创建一个在删除路由之前运行的中间件,并在我实际删除帖子之前删除User的post数组中的引用。这会被认为是最好的方式吗?我在Stack上发现了一个使用' pre'在这样的模式中的函数:
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main() {
int fd[2];
pipe(fd);
int k;
char a[32];
char b[32] = "1\n\0";
char c[32] = "2\n\0";
char d[32] = "3\n\0";
k = fork();
if (k == 0) {
dup2(fd[0], fileno(stdin));
close(fd[0]);
dup2(fd[1], fileno(stdout)); // Commenting this out will fix the hanging. Why?
close(fd[1]);
while (read(fileno(stdin), a, sizeof(a)) > 0) {
fprintf(stderr, "PID %d is printing %s", getpid(), a);
}
exit(0);
}
close(fd[0]);
write(fd[1], b, sizeof(b));
write(fd[1], c, sizeof(c));
write(fd[1], d, sizeof(d));
close(fd[1]);
return 0;
这是实际的堆叠帖子:Automatically remove referencing objects on deletion in MongoDB。我不能得到这项工作。但是,我确实实现了一个自定义中间件来删除引用,但感觉它可能不是最佳实践。任何提示/建议将不胜感激。谢谢!
答案 0 :(得分:4)