使用Nodejs和Mongodb访问EJS文件中App.js中声明的函数

时间:2019-03-22 16:45:17

标签: node.js ejs

我有一个app.js文件,我在其中声明了如下函数:

function acceptReq(req, res) {
     db.getDB().collection(collection).findOneAndUpdate({
         _id: ObjectId("5c94f444dab6e423a488d2ae")
     }, {
         $set: {
             requested: false,
             requests: {
                 user: undefined,
                 time: undefined
             },
             Booked: true
         }
     }, {
         returnOriginal: false
     }, (err, result) = > {
         if (err)
             console.log(err);
         else {
             req.flash(
                 'success_msg',
                 'Request Accepted!'
             );
             res.redirect('/dashboard/requests')
         }
     });
 }

我还有一个ejs文件,其中有一个按钮,当单击该按钮时,它将在app.js中执行此功能:

<button  onclick="acceptReq()" class="btn btn-success  btn-block">Accept</button>

但是,每当我单击按钮时,文件都无法识别acceptReq()

如何正确声明供ejs读取的函数?

1 个答案:

答案 0 :(得分:0)

您将无法使用的AFAIK。如果您看到代码acceptReq很可能是API端点处理程序方法,那么您可以定义API端点并将其用作处理程序,并通过在ejs文件的javascript部分中定义一个函数并传递该函数名称来调用该端点在按钮的onclick中。

<?php
// api/src/DataPersister/UsersDataPersister.php

namespace App\DataPersister;

use ApiPlatform\Core\DataPersister\DataPersisterInterface;
use App\Entity\Users;
use Doctrine\Common\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;

final class UsersDataPersister implements DataPersisterInterface 
{    
    private $managerRegistry;

    public function __construct(ManagerRegistry $managerRegistry)
    {
      $this->managerRegistry = $managerRegistry;
    }


    public function supports($data): bool
    {
        return $data instanceof Users;
    }

    public function persist($data){
        $em = $this->managerRegistry->getManagerForClass(Users::class);
        $user = new Users();
        //Persist User with encode password
        return $user;
        return new JsonResponse(['response'=>'yes']);
    }


    public function remove($data)
    {
      throw new \RuntimeException('"remove" is not supported');
    }
}