# Prevent Duplicate Subscribers

**URL:** <https://forum.wixstudio.com/t/prevent-duplicate-subscribers/39760>\
**Category:** Ask the community\
**Tags:** code, question\
**Created:** [August 27, 2020, 2:35pm UTC](https://forum.wixstudio.com/t/prevent-duplicate-subscribers/39760 "2020-08-27T14:35:29Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![nalonnimadden](https://sea1.discourse-cdn.com/wix/user_avatar/forum.wixstudio.com/nalonnimadden/32/14737_2.png) [@nalonnimadden](https://forum.wixstudio.com/u/nalonnimadden)\
**Post date:** [August 27, 2020, 2:35pm UTC](https://forum.wixstudio.com/t/prevent-duplicate-subscribers/39760/1 "2020-08-27T14:35:29Z")

</div>

I would just like to prevent subscribers from signing up multiple times. I’ve read the links and I have the code. What I am looking for is an explanation of WHAT to change in the code. I have a simple subscription form. Only asks for email, nothing else. This is the code I copied from the example form. What do I change to prevent people from adding their email multiple times? Do I change something on the export function line and then the return line? Help please? my site is www dot stillfolding dot com

**import** wixData **from** ‘wix-data’ ;

export function searchForDuplicates(collection, field, item) {  
// info contains the hook context  
// use the collectionName property to use function for multiple collections  
**return** wixData.query(collection)  
.eq(field, item[field])  
.find()  
.then((results) =\> {  
**return** results.items.length;  
})  
. **catch** ((err) =\> {  
**let** errorMsg = err;  
});  
}

export function noDuplicatesDB\_beforeInsert(item, context) {  
// Calls routine to check if value already exists in the collection.  
// If value not found, then save record.  
// Else, if value is found, then reject this insert to prevent duplicate values.  
// Note: concurrent inserts may result in duplicates.  
// Pass context to searchForDuplicates to use for multiple collections.  
**return** searchForDuplicates(context.collectionName, “names” , item).then((res) =\> {  
**if** (res \> 0 ) {  
**return** Promise.reject( ‘This item already exists’ );  
}  
**return** item;  
});  
}

---

<div class="post-metadata">

**Author:** ![CODE-NINJA](https://sea1.discourse-cdn.com/wix/user_avatar/forum.wixstudio.com/code-ninja/32/110588_2.png) [@CODE-NINJA](https://forum.wixstudio.com/u/CODE-NINJA)\
**Post date:** [August 27, 2020, 2:48pm UTC](https://forum.wixstudio.com/t/prevent-duplicate-subscribers/39760/2 "2020-08-27T14:48:50Z")

</div>

```javascript
import wixData from 'wix-data';

$w.onReady(async function () {
 // ----------------------------------------- User-Interface ------------------------------------------------
 let collection = "YourCollectionNameHere"
 let field = "ColumnInWhichToSearchHere"
 let item = $w('#ConnectedInputFieldHere').value
 // ----------------------------------------- User-Interface ------------------------------------------------
 let RESULT = await searchForDuplicates(collection, field, item)
    console.log(RESULT)
})

export function searchForDuplicates(collection, field, item) {
 return wixData.query(collection)
        .eq(field, item[field])
        .find()
        .then((results) => {
 return results.items.length;
        })
        .catch((err) => {
 let errorMsg = err;
        });
}

export function noDuplicatesDB_beforeInsert(item, context) {   
 return searchForDuplicates(context.collectionName, "names", item).then((res) => {
 if(res > 0) {   
 return Promise.reject('This item already exists');
        }
 return item;
    });
}

```

---

<div class="post-metadata">

**Author:** ![CODE-NINJA](https://sea1.discourse-cdn.com/wix/user_avatar/forum.wixstudio.com/code-ninja/32/110588_2.png) [@CODE-NINJA](https://forum.wixstudio.com/u/CODE-NINJA)\
**Post date:** [August 27, 2020, 3:03pm UTC](https://forum.wixstudio.com/t/prevent-duplicate-subscribers/39760/3 "2020-08-27T15:03:05Z")

</div>

Code-Improvement…

```javascript
import wixData from 'wix-data';

// ----------------------------------------- User-Interface ------------------------------------------------
 const buttonID = "HereTheIDofYourSUBMIT_BUTTON"
 const Collection = "YourCollectionNameHere"
 const Field = "ColumnInWhichToSearchHere"
 var Item = $w('#ConnectedInputField_ID_Here').value //<----- Email-Input-Field
// ----------------------------------------- User-Interface ------------------------------------------------

$w.onReady(function () {
    $w('#'+buttonID).onClick(async()=>{
 
 let RESULT = await searchForDuplicates(Collection, Field, Item)
        console.log(RESULT)
    })
})

export function searchForDuplicates(collection, field, item) {
 return wixData.query(collection)
        .eq(field, item[field])
        .find()
        .then((results) => {
 return results.items.length;
        })
        .catch((err) => {
 let errorMsg = err;
        });
}

export function noDuplicatesDB_beforeInsert(item, context) {   
 return searchForDuplicates(context.collectionName, "names", item).then((res) => {
 if(res > 0) {   
 return Promise.reject('This item already exists');
        }
 return item;
    });
}

```

Connect the USER-INTERFACE with your FORM!

```javascript
 const buttonID = "HereTheIDofYourSUBMIT_BUTTON"
 const Collection = "YourCollectionNameHere"
 const Field = "ColumnInWhichToSearchHere"
 var Item = $w('#ConnectedInputField_ID_Here').value

```

---

<div class="post-metadata">

**Author:** ![Erin\_Malinski](https://sea1.discourse-cdn.com/wix/user_avatar/forum.wixstudio.com/erin_malinski/32/80547_2.png) [@Erin\_Malinski](https://forum.wixstudio.com/u/Erin_Malinski)\
**Post date:** [June 6, 2024, 5:13pm UTC](https://forum.wixstudio.com/t/prevent-duplicate-subscribers/39760/4 "2024-06-06T17:13:27Z")

</div>

Hi there! Where do we copy this code on the form?
