代码之家  ›  专栏  ›  技术社区  ›  user3618284

如何使用objection将新对象添加到表中。js和knex。js?

  •  2
  • user3618284  · 技术社区  · 7 年前

    我想使用Objection向表中添加一个新对象。js和knex。js。我写了以下代码:

    const Provider = require('../models/provider);
    
    Provider
    .query()
    .where('ProviderName', name)
    .then((data) => {
      if (data.length === 0) {
        Provider
          .query()
          .insert({ ProviderName: name,
            ProviderWebSite: webSite,
            ProviderContact: contact,
            ProviderStatus: status })
          .then(() => {
            res.render('results', { result: req.body });
          });
      } else {
        res.render('results1');
      }
    })
    .catch(() => {
      res.render('404');
    });
    

    results 桌子还是空的。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mikael Lepistö    7 年前

    您似乎缺少承诺链中的至少一个返回,但要了解失败的原因,您需要打印出当catch块发出404时抛出的错误。

    const Provider = require('../models/provider');
    
    Provider
      .query()
      .where('ProviderName', name)
      .first()
      .then(result => {
         if (!result) {
           return Provider
            .query()
            .insertAndFetch({
              ProviderName: name,
              ProviderWebSite: webSite,
              ProviderContact: contact,
              ProviderStatus: status 
            });
          }
          return result;
      })
      .then(() => {
        // before rendering views, making sure that correct data was fetched
        res.send('result ' + JSON.stringify(result, null, 2));
      })
      .catch(err => {
        // print out error to be able to debug your problem
        res.send('404 ' + err.stack);
      });