sys cheng
sys cheng

Reputation: 49

Why cannot use findOne() function in scripts?

<button class="button is-link" type="submit"
                                onclick="matching('<%= product.id %>')">Define</button>

The HTML of the button.

<script>
    async function matching(productID) {
        var r = confirm("Define preference?");

        if (r) {
            alert("testing1")
            
            var thatProduct = await PriceTracker.findOne(productID);
            
            alert("testing2")

            if (thatProduct) {
                alert("Have that product");
                location.assign("/");
            } else if (response.status == 409) {
                var e = await response.json();
                alert(e);
            } else if (response.status == 404) {
                var e = await response.json();
                alert(e);
            }
        } else {
            alert(response.statusText);
        }
    }
</script>

This is the code for a matching function with the sails framework.

When I click a button, the matching function will be called.

The confirm box can be displayed. When I click 'ok', the alert message of "testing1" can also be displayed, while the second alert message "testing2" could not display, and hence the "if condition" cannot be reached as well.

How can I get that product from my database for further usage?

Upvotes: 0

Views: 60

Answers (1)

Huan Le
Huan Le

Reputation: 206

await won’t work in the top-level code

Change your matching function into this

var matching = (async (productID) => {
    try {
       ...    } 
    catch (e) {
      // handle the error
      ...
    }
})();

Upvotes: 1

Related Questions