具有JavaScript承诺的多个函数

具有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'},

目标:

使用JavaScript承诺,在load()上,如果数据库尚未填充,则使用数据对其进行种子设定,然后使用getWidgets()显示数据,否则,如果数据库已被种子设定为getWidgets()

代码:

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);
        })
      });
    }