如何使用 objection.js 和 knex.js 将新对象添加到 table?

How to add a new object to a table using objection.js and knex.js?

我想使用 Objection.js 和 knex.js 将新对象添加到 table。我写了这段代码:

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 并且 table 仍然是空的。

您的 promise 链中似乎至少遗漏了一个 return,但要了解失败的原因,您需要打印出当您的 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);
  });