Отправка данных в процесс визуализации

#node.js #electron

#node.js #электрон

Вопрос:

Я использую "electron": "^4.1.4" и получаю свои данные knex из базы данных sqlite3.

Я попытался отправить данные через вызов ipcMain. Найдите ниже мой main.js

 const {
  app,
  BrowserWindow,
  ipcMain
} = require('electron')

// require configuration file
require('dotenv').config()

// database
const knex = require('./config/database')

// services
const {
  ScheduledContent
} = require('./service/ScheduledContent')

require('electron-reload')(__dirname);

let mainWindow

const contentService = new ScheduledContent(knex)
ipcMain.on('content-edit', async (e, args) => {
  console.log("content-edit - Backend");
  let res = await contentService.getAllContent()
  event.sender.send('content-edit-res', res)
})

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 1000,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  // and load the index.html of the app.
  mainWindow.loadFile('./public/index.html')

  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

app.on('ready', createWindow)

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

app.on('activate', function () {
  if (mainWindow === null) createWindow()
})
  

Мой renderer.js выглядит следующим образом:

 const {
    ipcRenderer
} = require('electron')

console.log("loaded renderer.js 123")


document.addEventListener('DOMContentLoaded', pageLoaded);

function pageLoaded() {
    console.log('The page is loaded');
    ipcRenderer.send('content-edit', 'x')
}

ipcRenderer.on('content-edit-res', (event, arg) => {
    console.log(arg)
})
  

Я попытался получить данные во внешнем интерфейсе при загрузке страницы, затем я хотел добавить их к моему <table id="table1"> тегу в моем index.html

Однако я не получаю никаких данных во внешнем интерфейсе.

Есть предложения, что я делаю не так?

Я ценю ваши ответы!

Ответ №1:

На данный момент проблема с кодом…

  // event in receive, not e... 
 ipcMain.on('content-edit', async (event, args) => {
   console.log("content-edit - Backend");
   let res = await contentService.getAllContent()
   event.sender.send('content-edit-res', res)
 })
  

Но, в качестве дополнительной информации, вы также можете отправлять данные в процесс визуализации с webContents помощью окна.

  const BrowserWindow = electron.BrowserWindow;
 let win = new BrowserWindow(<your configs>);
 win.webContents.send('message', 'Hello from main!');
  

Вы можете найти полезную информацию здесь