我有
Page.findById(pageId).then(page => {
const pageId = page.id;
..
});
我的问题是,如果没有给出页面ID,它应该根据一些条件选择第一个可用的页面,方法如下:
Page.findOne({}).then(page => {
const pageId = page.id;
..
});
但如果没有找到页面,就应该创建一个新页面并使用它,可以通过以下方式完成:
Page.create({}).then(page => {
const pageId = page.id;
..
});
但是我如何将所有内容合并到尽可能少的行数中呢?
我的内部有很多逻辑。
page => { ... }
所以我非常希望能够聪明地做到这一点,这样我就可以避免像这样做了。
if (pageId) {
Page.findById(pageId).then(page => {
const pageId = page.id;
..
});
} else {
Page.findOne({}).then(page => {
if (page) {
const pageId = page.id;
..
} else {
Page.create({}).then(page => {
const pageId = page.id;
..
});
}
});
}
我想我可以使用类似以下方式将静态值分配给模式: 我在考虑是否可以使用静态值来为模式分配某些内容,例如:
pageSchema.statics.findOneOrCreate = function (condition, doc, callback) {
const self = this;
self.findOne(condition).then(callback).catch((err, result) => {
self.create(doc).then(callback);
});
};
Page.create({}).then(page)
? - Stavros Zavrakas