具有JavaScript承诺的多个函数
目标: 使用JavaScript承诺,在load()上,如果数据库尚未填充,则使用数据对其进行种子设定,然后使用getWidgets()显示数据,否则,如果数据库已被种子设定为getWidgets() 代码:具有JavaScript承诺的多个函数,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,目标: 使用JavaScript承诺,在load()上,如果数据库尚未填充,则使用数据对其进行种子设定,然后使用getWidgets()显示数据,否则,如果数据库已被种子设定为getWidgets() 代码: const initialWidgets = [ {id: 1, color: 'Red', sprocketCount: 7, owner: 'John'}, {id: 2, color: 'Taupe', sprocketCount: 1, owner: 'George'},
const initialWidgets = [
{id: 1, color: 'Red', sprocketCount: 7, owner: 'John'},
{id: 2, color: 'Taupe', sprocketCount: 1, owner: 'George'},
{id: 3, color: 'Green', sprocketCount: 8, owner: 'Ringo'},
{id: 4, color: 'Blue', sprocketCount: 2, owner: 'Paul'}
];
在load()中处理这三种方法的正确方法是什么
承诺对我来说是新的。这是可行的,但我不知道这是否是正确的方法 我非常感谢那些比我更有知识的人说出我的解决方案(好的或坏的,或者是否有更好的解决方案)
const initialWidgets = [
{id: 1, color: 'Red', sprocketCount: 7, owner: 'John'},
{id: 2, color: 'Taupe', sprocketCount: 1, owner: 'George'},
{id: 3, color: 'Green', sprocketCount: 8, owner: 'Ringo'},
{id: 4, color: 'Blue', sprocketCount: 2, owner: 'Paul'}
];
require('./model');
const Widget = require('mongoose').model('WidgetModel');
元:
function seedWidgets() {
let results = [];
Widget.find({}, function (err, collection) {
if (err) { throw err;}
if (collection.length === 0) {
initialWidgets.map(widget => {
Widget.create(widget);
});
}
})
}
export function getWidgets(req) {
let widgets = req.session.widgets;
if (!widgets) {
/// ?? seed database
/// ?? add new records to session
}
return widgets;
}
export default function load(req) {
return new Promise((resolve, reject) => {
resolve(getWidgets(req));
})
}
const initialWidgets = [
{id: 1, color: 'Red', sprocketCount: 7, owner: 'John'},
{id: 2, color: 'Taupe', sprocketCount: 1, owner: 'George'},
{id: 3, color: 'Green', sprocketCount: 8, owner: 'Ringo'},
{id: 4, color: 'Blue', sprocketCount: 2, owner: 'Paul'}
];
require('./model');
const Widget = require('mongoose').model('WidgetModel');
function seedWidgets() {
let results = [];
return new Promise((resolve, reject) => {
Widget.find({}, (err, collection) => {
if (collection.length === 0) {
initialWidgets.map(widget => {
Widget.create(widget);
results.push(widget);
});
}
if (err) reject(err);
else resolve(results);
})
});
}
export default function load() {
return new Promise((resolve, reject) => {
resolve(getWidgets(req));
});
}
export default function getWidgets() {
return new Promise((resolve, reject) => {
seedWidgets().then((result) => {
Widget.find({}).then((result) => {
resolve(result);
})
}).catch((err) => {
reject(err);
})
});
}