Node.js

151

Solutions

286

Contributors

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

Share tech news, updates, or what's on your mind.

Sign up to Post

I have a problem in my project probably with babel-cli or other module related with babel because it shoots this error when I use only ES5 :
TypeError: Class constructor model cannot be invoked without 'new'
so the error occurred when I use this command to create models with sequelize , in this line :
var model = db.sequelize.import(path.join(__dirname,"models/", file));

Open in new window

this is the whole code of connect.js file :
const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = 'development';
const config = require('../config/config')[env];

const sequelize  = new Sequelize(config.database.database_name, config.database.username, config.database.password, config.database.database_config);

var db = {
    sequelize : sequelize,
    Sequelize : Sequelize
};

db.sequelize.authenticate().then(() => {
    console.log('database worked !!!');


    fs.readdirSync(path.join(__dirname,'models/')).filter(file => {
        return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
    }).forEach(file => {
        var model = db.sequelize.import(path.join(__dirname,"models/", file));
        //var model = require(path.join(__dirname,"models/", file))(sequelize, Sequelize);
        db[model.name] = model;
    });

    Object.keys(db).forEach(modelName => {
        if (db[modelName].associate) {
            db[modelName].associate(db);
  

Open in new window

0
SolarWinds® IP Control Bundle (IPCB)
SolarWinds® IP Control Bundle (IPCB)

Combines SolarWinds IP Address Manager and User Device Tracker to help detect IP conflicts, quickly identify affected systems, and help your team take near instantaneous action. Help improve visibility and enhance reliability with SolarWinds IP Control Bundle.

So when I published an npm package, for some reason, it threw my profile name with my package information into the node_modules so here is what happens when it is installed...

-testdirectory
--node_modules folder
--package-lock.json
---node_modules/@myusername/myprojectname

this is completely the wrong project structure.  What I need is the following:

I need the following in the same folder
myprojectname folder
node_modules folder

but for some reason, the project folder gets pushed into node_modules.  What can i do to correct this?
0
I am using a 3rd party script to upload images via Ajax and the callback gives you an array with the details of each uploaded image like the name, size, etc. I want to store the name of the images in the database.

I tried this but it only inserts the first image name:

        if (data.isSuccess) {
         const uploaded = uploader.getFileList();
         for (const images of uploaded) {
            console.log(images.name);
            const upload = new uploadModel({
                imgName: images.name
            });
            return upload.save();
         }

Open in new window


If I just console.log it however, it lists all the image names.
1
I have a form for adding a product which lets a user input product name, description etc. and also allows an image upload.

In my app.js file which is my entry point, I have:

const fileStorage = multer.diskStorage({
    destination: (req, file, cb) => {
      cb(null, 'uploads');
    },
    filename: (req, file, cb) => {
       cb(null, new Date().toISOString() + '-' + file.originalname);
    }
  });


  const fileFilter = (req, file, cb) => {
    if (
      file.mimetype === 'image/png' ||
      file.mimetype === 'image/jpg' ||
      file.mimetype === 'image/jpeg'
    ) {
      cb(null, true);
    } else {
      cb(null, false);
    }
  };

app.use(multer({ storage: fileStorage , fileFilter: fileFilter, limits: { fileSize: 100000} }).single('image'));

Open in new window


Here is my controller:

exports.postAddListing = (req, res, next) => {
    const title = req.body.title;
    const category = req.body.category;
    const description = req.body.description;
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        return res.status(422).render('account/add-listing', {
            pageTitle: 'Add Item',
            path: '/account/add-listing',
            errorMessage: errors.array(),
            successMessage: null,
            oldInput: {
                title: title,
                description: description
            }
        });
    }

    const image = req.file;
    const imageUrl = image.path;

    const product = new Product({
        title: title,
        category: category,
        description: description,
        userId: req.user,
        datePosted: Date.now(),
        imageUrl: imageUrl
    });
    product.save()
    .then(result => {
        const successMessage = req.flash('success', 'Item sucessfully added');
        res.redirect('/account/add-listing');
    })
    .catch(err => console.log(err));
};

Open in new window


I am using express-validator for form validation. The problem I have is that if I for example leave all fields empty but choose an image, validation will fire and I will get error messages but the image will still upload. If form validation fails I don't want the image to upload but not sure how to achieve that.
0
I am just getting started with Angular (https://angular.io).

What I notice is every time I create a new project using the ng new myproject  (e.g. ng new angular-tour-of-heroes), it creates a (nodes_module) directory with like over 20,000 files.

I understand that in some cases you can set different settings that don't require all of the same nodes so that would create a different set of files for nodes_module.

But if I have multiple projects that all will use the same basic set of files, is there a way to share the nodes_module?

It seems that if I'm working on ten different projects at once that's an awful lot of files and disk space that is identical...

Is there a space saving option?

Also, if this is the best way to do this, is there a best practice for how to archive old projects.  In other words, if I have a project that I work on and turn over to a client, I no longer need it on my drive taking space. But if I want to save it in case the client wants me to replicate it again... is it okay just to save the src files or do I need to save the whole thing including the 24K+ nodes_miles?

Thanks.
0
There is a Java Spring MVC project and a requirement to delegate the frontend to an external team of frontend developers. The backend is secret (proprietary trading system) and the frontend is therefore the only part of it that can be disclosed (Freemarker templates with HTML + CSS, JS, images).

I figured node.js has a freemarker library and the express server. It can render Freemarker templates:

const express = require('express')
const fs = require('fs');
const app = express()
const port = 3000

const Freemarker = require('freemarker');	 
const freemarker = new Freemarker();

app.get('/', (req, res) => {
	var model = {
		title: 'Test render',
		test: 'freemarker in JS!'
	};	

	console.log("Opening /");
	fs.readFile('main.ftlh', 'utf8', function(err, contents) {
		freemarker.render(contents, model, (err, result) => {
		  if (err) {
			throw new Error(err);
		  }
		  		  
		  res.send(result);
		});
	});	
})

app.listen(port, () => { } /*console.log(`Example app listening on port ${port}!`)*/)

Open in new window


Is there any quick solution to create mock controllers? Mock controllers should have some hardcoded data in their model just to make it possible to render the views.
Ideally, they would be generated somehow from the original Java controllers. I know regular expressions may be able to do it, but is there perhaps a better way? Some tool?
0
Hi Experts!

Got issue with Node.JS not running in the command line. Any suggestions for this issue so that the code is up and running? The password part is not issue but line 31 SyntaxError?

var express = require('express');
var app = express();
var mysql= require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '---------------------',
  database : 'nodeTest'
});
app.get('/', function (req,res) {
  connection.query('select * from test_table', function (error, results, fields) {
    if (error) throw error;
	var reply='';
	Object.keys(results).forEach(function(key){
		//For each loop passing results variable through the Object.Keys method. 
		var row= results[key];
		row+="<h2>"+row.id+":"+row.name+"</h2><br>";

  });
  	res.send(reply);
});
});
app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

Open in new window

0
Hi,

i am sending data to Mariadb and its works fine using Node RED. Its pop up error in idea situation where no data been send. While the code end in else conditions the error message pop up. May I know to over this error.
var status = context.get('status')||0;

var current = global.get("stdTime");
var daycurrent = global.get("stdDayTime");

var  m_work_start = global.get('Mor_Shift_Start');
var  m_work_end = global.get('Mor_Shift_Stop');

var n_work_start = global.get('Night_Shift_Start');
var n_work_end = global.get('Night_Shift_Stop');


/********************** Between Morning & Night Shift ********************************************/
//from night to morning
if (current > n_work_end && current < m_work_start) {
    if(status === 0)
        msg.topic ="INSERT INTO overalldata (deviceID, prdline, line, pulse, sumPulse, time, outputPin, STtarget, shiftTRGT, STActual, different, targetACHV, cycleTime, remarks) VALUES ('1', 'line 1', '1', '0', '0', '"+daycurrent+"', 'RESET', '0', '0', '0', '0', '0', '1', 'ok')";
        status = 1;
        context.set('status',status);
}

//from morning to night
else if (current < n_work_start && current > m_work_end) {
    if(status === 0)
        msg.topic ="INSERT INTO overalldata (deviceID, prdline, line, pulse, sumPulse, time, outputPin, STtarget, shiftTRGT, STActual, different, targetACHV, cycleTime, remarks) VALUES ('1', 'line 1', '1', '0', '0', '"+daycurrent+"', 'RESET', '0', '0', '0', '0', '0', '1', 'ok')";
        status = 

Open in new window

0
Experts!

I have created a Node.JS web app with two APis. One of the APIs is GUI where the end-user sees the GUI. The second API is the auth guard that will go and talk to 1L using OPENID > authenticate > fetch user profile and render information to the GUI for the end-user.

We originally wanted to use SAML assertion (SSO) similar to Zendesk or Others that when someone is authenticated to 1L and you navigate to the site domain.zendesk.com the established logged in token just redirects you to the site. When you are not logged in to 1L and you go to the site you are redirected to 1L for auth then redirected back to the site of choice once you successfully auth.

Our application does not have a user database, instead, we are banking on 1L to do authentication for us and also pass through user information to our second API so that we can then pass specific end-user details from the internal side to the GUI. The end goal is to be able to authenticate with 1L and be redirected to the sales.cbac.com and be able to know user specific details about the current user, but that user is to never have to access the login page

Right now, we had to spin up a login page that will accept user info > sends info to auth guard to call 1L auth > returns valid user and user profile info > all using OPENID.

What is the best approach? It seems like we are missing something.

API URL1 (GUI) - sales.cbac.com API URL2 (auth guards - OPENID) - sales-api.cbac.com Current state you land at …
0
Hello Experts

I have been able to previously install npm install express into individual folders earlier today but now can't.

If I attempt to install npm express into a targeted folder, it loads in the cmd line but does not generate the package and node_modules file and folder that it's suppose to in the targetted folder.

Is there a solution available for this? (no static file servers/request, only vanilla npm install express). I need to install the express module into any folder that is targetted/destination on a desktop.
0
Big Business Goals? Which KPIs Will Help You
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

Hello Experts,

I am looking for a solution to a ER_NOT_SUPPORTED_AUTH_MODE that is stating that the authentication protocol is not supported requested by the server, consider upgrading.

The latest version of MYSQL out is 8.0.12 and has no updates to install. MySQL and Node.JS are being used in combination for this demonstration. The node.js file runs fine in the win cmd line when referencing the file.

There is a password that I have set to the MySQL server, which will be needed. This is a LocalHost. Running the page set at the port 3000 returns as a "unable to connect error"

I have tried this solution to no avail in the mySQL command line in an attempt to bridge the issue:

use mysql;
update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

Only the mySQL command line can be used (excluding workbench, etc). This seems to be a CLIENT_AUTH problem with the latest mySQL version?
index.js
0
Has been almost a year that I switch to Auth0 in order to manage my customer's access to the dashboard of my application. Nowadays I need to implement access for a RESTFULL API.

If I follow the instructions in order to secure the NodeJS app using JWT it works like a charm. The issue is that I am not properly sure on the implementation for the end user in order to get the token needed for access this API.

I thought of creating the tokens on the dashboard or just use a server side implementation for the login/authentication. I did the last using the access to my own database before and worker amazingly. My issue is that I am not completely sure on how to do it for the end user using Auth0.

Would be great if you can guide me in order to implement the login/authentication side of the API using auth0 and nodejs.
0
Hi, Experts,

I am building a node JS web app that will call REST API from one login user info.

https://developers.onelogin.com/quickstart/authentication#web-app

spefically from

https://github.com/onelogin/onelogin-oidc-node/tree/master/1.%20Auth%20Flow

the goal is to attain this

https://developers.onelogin.com/openid-connect/api/user-info

but when you use the example curl request you get this:

[code]curl -XGET "https://openid-connect.onelogin.com/oidc/me" \
> -H "Authorization: Bearer 0e4e2d02323de1e71dda7843d968f20425965488d407fbc952927389b63517ac5663"
{"error":"invalid_token","error_description":"invalid token provided"}[/code]

and

[code]curl -XGET "https://domain.onelogin.com/oidc/me" \
> -H "Authorization: Bearer 0e4e2d02323de1e71dda7843d968f20425965488d407fbc952927389b63517ac5663"
{"error":"invalid_token","error_description":"invalid token provided"}[/code]

the flow is API call goes to one login and one login passes access key so you can get user info. when you try to call user info you get an error.

any help would be greatly appreciated.

thank you
0
How to remove mandatory filed check in node js (loopback framework).

I commented below lines from html
<span class="errorForm" ng-show="(profileForm.uOccupation.$dirty || submitted) && (profileForm.uOccupation.$error.required)">
                                                <span class="errorForm" ng-show="profileForm.uOccupation.$error.required">Required</span>
                                            </span>

so now alert is not coming on UI but now page is not submitting.
0
Connection Error: No Mongos proxy available.

Environment: Node.js, MongoDB, Mongoose

Start.js
const mongoose = require('mongoose');


mongoose.connect(process.env.DATABASE,  { useNewUrlParser: true })
mongoose.Promise = global.Promise;
mongoose.connection
  .on('connected', () => {
    console.log(`Mongoose connection open on ${process.env.DATABASE}`);
  })
  .on('error', (err) => {
    console.log(`Connection error: ${err.message}`);
  });

.env file

DATABASE=mongodb://username:DBpassword@player-shard-00-00-1cmur.mongodb.net:27017,player-shard-00-01-1cmur.mongodb.net:27017,player-shard-00-02-1cmur.mongodb.net:27017
0
Any Zurb Foundation users on here? I am getting the below errors when opening Foundation.

Version info:

Git = v2.13.2

Node = v7.1.0

NPM = v3.10.10

Foundation-CLI = v2.2.5

----------------------------------------------------

1)      I open the console/CMD Prompt
2)      Try to run:
-      foundation –v (to check Foundation CLI version)
-      -or -
-      foundation new (to start a new project)
3)      Get the error


SyntaxError: Unexpected token function

    at Object.exports.runInThisContext(vm.js:78:16)

    at Module._compile (module.js:545:28)

    at Object.Module._extensions..js(module.js:582:10)

    at Module.load (module.js:490:32)

    at tryModuleLoad (module.js:449:12)

    at Function.Module._load(module.js:441:3)

    at Module.require (module.js:500:17)

    at require (internal/module.js:20:19)

    at Object.<anonymous>(C:\Users\*****\AppData\Roaming\npm\node_modules\foundation-cli\node_modules\terminal-kit\lib\termkit.js:53:26)

    at Module._compile (module.js:573:32)

---------------------------------------

In PATH = Git then NPM then Nodejs

‘foundation –v’  -or- ‘foundation new’ resultsin:

C:\Users\*****\AppData\Roaming\npm\node_modules\foundation-cli\node_modules\terminal-kit\lib\detectTerminal.js:179

exports.getParentTerminalInfo = async functiongetParentTerminalInfo( callback ) {

                                                                     ^^^^^^^^
0
I want to import starting from the root folder, not go several folders down.
How do I do that?

I come across this issue while trying to import a guestbook (like it's 1999) script for my homepage.

import MyGuestbook from '../../components/MyGuestbook.vue'

Open in new window

compiles.

import MyGuestbook from '/src/components/MyGuestbook.vue'

Open in new window

doesn't compile.

GuestBookPage.vue

    <template>
    <div>
        <MyGuestbook />
    </div>
    </template>
    
    <script>
    import MyGuestbook from '../../components/MyGuestbook.vue'
    
    export default {
      name: 'GuestbookPage',
      components: {
        MyGuestbook
      }
    };
    </script>

Open in new window


MyGuestbook.vue

     
<template>
      </div>
      </div>
    </template>
    
    <script src="non-editable-comments-v0.1.0.js"></script>
    <script>
      window.safeComments('CommentTitle', 'CommentTargetID');
    
      export default {
        name: 'MyGuestbook'
      };
    </script>

Open in new window


I understand that I need to use webpack, but my project uses neutrinojs/vue (Recommended for the type of project) in combination with webpack. I'm not familiar with either of them. So far adding a _webpack.config.js_ and changing the import line to `import MyGuestbook from '@/components/MyGuestbook.vue'` has not worked.

    module.exports = {
      resolve: {
        extensions: [
          '.js', '.vue', '.json'
        ],
        alias: {
          '@': resolve('src'),
          '@root': resolve('.')
        }
      }
    };

Open in new window


Nor has editing _.neutrinorc.js_

    module.exports = {
      use: [
        '@neutrinojs/standardjs',
        [
          '@neutrinojs/vue',
          {
            html: {
              title: 'MySite'
            }
          }
        ],
        '@neutrinojs/jest',
        (neutrino) => {
    	  neutrino.config.resolve.extensions
    	    .add('.js')
    	    .add('.json')
    	    .add('.vue');
    		
          neutrino.config.resolve.alias
          .set('@', 'src')
          .set('@root', '.');
    	}
      ]
    };

Open in new window


the error:


Open in new window

0
I am trying to retrieve the average value from a PostgreSQL database using a Sequelize ORM with React on the front end and running Node.js server.  My 'GET' request on the Node side retrieves all of the data from the PostgreSQL database so I know everything is wired up with React using the following code:

module.exports = function (db, app, bodyParser) {


    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));

    app.get('/survey_init', function(req, res, next) {
        db.answers.findAll({})
        .then(function (data) {

            res.send(data);
              })
          .catch(function (err) {
            return next(err);
          })
        });
        
    }

Open in new window


However, when I attempt to run an average on a specific column called 'conf_one' in my PostgreSQL database I get an error.  I will list the modified code (modified from code above) that is throwing the error here:

module.exports = function (db, app, bodyParser) {


    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));

    app.get('/survey_init', function(req, res, next) {
        db.answers.findAll({
          attributes: ['conf_one', [models.Sequelize.fn('AVG', models.Sequelize.col('conf_one')), 'conf_one_avg']]
        })
        .then(function (data) {

            res.send(data);
              })
          .catch(function (err) {
            return next(err);
          })
        });
        
    }

Open in new window



The error that I get with the code is the following error and I do not get the result of an average calculation.


Open in new window

0
Hi,

I have a task in AWS that is started by ECS. I have developed a Cloudformation script that creates the ECS cluster, service, task definitions and containers.

The EC2 instances (2 to begin with) are initiated and are healthy. ECS then creates the tasks on each EC2 instance. However, have 1 minute, the tasks are stopped by ECS and it tries to recreate it. I presume this is something to do with the scheduler on AWS and not getting a healthy check back.

It is a node app running on port 300 which is mapped to the container. If I login to the EC2 instance and do a simple curl 127.0.0.1:32XXX (host port) then I get "no reply from server". Ok so it is something wrong with the image or container.

However, if I launch my own container of the same image publishing the ports ("docker run -d -p 32810:3000 <image> yarn start") and then do curl 127.0.0.1:32810 then I get a response from the server.

I cannot figure out how to debug this as there are no logs with any errors. Anyway..(I created the one on port 32810) the image is the same in both. I can only figure it is something to do with what the ECS agent does when it boots a task.

48ccad832ad2        <image>   "yarn start"        9 seconds ago       Up 8 seconds        0.0.0.0:32831->3000/tcp   ecs-test-InterfaceCogTaskDefinition-1UE2FONT2RQU3-1-InterfaceCog-f092fec2d9d1e8a90300
36016de55b81        <image>   "yarn start"        23 minutes ago      Up 23 minutes       0.0.0.0:32810->3000/tcp   practical_banach

0
4 signs you’re cut out for a cybersecurity career
4 signs you’re cut out for a cybersecurity career

It’s one of the most in-demand fields in technology and in the job market as a whole. It’s crucial to our individual and national security. And it may be your path to a future filled with success and job satisfaction—if these four traits sound like you.

I have a 2 node DAG Exchange 2013 CU19.
I am trying to delete any email older than 1/1/2016 for a specific user, but no matter what I do, I get nothing from searchquery filtering.
I Have confirmed Roll group Membership for Discovery Management and Mailbox Import Export.
I tried every format of double and single quotes for the date, and could not find anything.
I then tried to remove something from my mailbox, and get the same thing.
I sent me an email with subject test, and can not find it either.

I have tried:
search-mailbox -identity ttaylor -searchquery subject:test -estimatresulteonly
search-mailbox ttaylor -searcquery subject:test -estiamateresultonly
search-mailbox -identity ttaylor -searchquery "subject:test" -estimatresulteonly
search-mailbox ttaylor -searcquery "subject:test" -estiamateresultonly

I always get the same output
RunspaceId       : 304008d0-fa23-40d9-8867-d6ea567d5b9c
Identity         : Domain/ou/Tim Taylor
TargetMailbox    :
Success          : False
TargetFolder     :
ResultItemsCount : 0
ResultItemsSize  : 0 B (0 bytes)

Any suggestions
0
I had this question after viewing Change a specific key value in app.config file with another value..

i have  a config file as below
<meeServices>
  <edmServers>
    <server name="EDMServer" description="EDMServer" username="" password="" integratedSecurity="true" />
  </edmServers>
  <rdmServers>
    <server name="EDMServer" description="EDMServer" username="" password="" integratedSecurity="true" />
  </rdmServers>
  <settings>
    <add name="ExposureSource" value="path" />
    <add name="DomainDatabase" value="Server=HeadNode;Initial Catalog=RMS_MEE_Data;Integrated Security=True;" />
    <add name="ResultsDatabase" value="Server=HeadNode;Initial Catalog=RMS_MEE_Results;Integrated Security=True;" />
    <add name="JobManagerService" value="url" />
    <add name="licensecode" value="code" />
    <add name="WhiteListedIPAddresses" value="*" />
  </settings>
</meeServices>

 in settings , i want to change the name which contains licensecode to newcode. how do i do this.

$ConfigFile = 'C:\Users\psman\Downloads\dev_qa.config'
## XML Node names and Attributes are CaSe SeNsItIvE!
$xml = [xml](Get-Content -Path $ConfigFile)

$xml.SelectSingleNode("meeservices/settings/add[@name='licensecode']").SetAttribute("name", "data1")

$xml.Save($ConfigFile)
0
Hello,
I am creating a basic user authentication using nodejs, express.js and Passport.js.
I follow this example and it kind of works for me:
https://github.com/passport/express-4.x-local-example/blob/master/server.js

BUT, I would like to modify this demo to not have routes and not a template engine (ejs)

I have a folder with a bunch of static html files I would like to protect.
admin/
         /login.html
         /page1.html
         /page2.html
         /page3.html

I would like to password protect access to all html file under admin using basic authentication, but without routes.

In other words, I would like to access wepage.com/page2.html or any other html page and be redirected to login page, after logging in, I would like to be redirected back to page2.html and after that I could access the rest of the html pages without having to login. wepage.com/page4.html, wepage.com/page3.html, etc

The reason I don't want to have routes is because new html pages are added all the time and I don't want to keep creating routes for new ones or remove routes when deleting html pages.
Also, I don't really need a template engine since my pages are static html and I would like people to access the html directly. wepage.com/page1.html

The only requirements I have is nodejs, express.js and Passport.js.

Can someone please guide me or point me to an example to accomplish this?

Thanks
EMimi
0
So i have a user schema like this:

var user_schema = new Schema({
   username:{type:String,required: true, unique : true, trim: true},
   college:{type:String,required: true},
   password:{type:String,required: true, trim: true},
   email:{type:String,required: true, unique : true, trim: true},
   phone:{type:Number,required: true, unique : true, trim: true},
   dp:{type:String},
   tag:{type:String},
   description:{type:String},
   friends:[{type:String}],
   pending:[{type:String}],
   skills:{type:String},
   bucket:[{type:String}]
  });

Open in new window

and my objective is, to search the all the documents in the collection to get people based on the following conditions:

1. They should not be in the users' "friends" array.
2. They should not be in the users' "pending" array.
3. They should have the same "tag" (a string value) as the user.

So, basically I have to compare the users' fields ("friends","pending" and "tags"), with fields of all documents in the whole collection.

How do I do it, using mongoose (nodejs mongodb library)
0
I have to initialize an array to [](empty array) and then push user chose "tags" into it. This is my schema:

 var user_schema = new Schema({
   username:{type:String,required: true, unique : true, trim: true},
   college:{type:String,required: true},
   password:{type:String,required: true, trim: true},
   email:{type:String,required: true, unique : true, trim: true},
   phone:{type:Number,required: true, unique : true, trim: true},
   dp:{type:String},
   tags:[{type:String}],
   description:{type:String},
   skills:{type:String},
   bucket:[{type:String}]
 }); 

Open in new window

` and i have to initialize "tags" to [] and push user string values (user entered/chosen) every time the request is made to the API call.

I am using this line of code:

 stu_user.findOneAndUpdate(
   { _id: req.decoded.id },
   { $set:{tags:[]},$push: { tags: 'some chosen string'  } },
  function (error, success) {
         if (error) {
            console.log(error);
        } else {
            console.log(success);
        }
    });

Open in new window

But it's not working.
0
I'm a complete beginner so I may have made some stupid mistakes. I made this script with x-ray to scrape user's phone number pictures from different website pages. The script was working very well until it reaches a page where the user didn't put his number in the page and the script stops.

How can I make it continue to the next page even if the phone number doesn't exist? and is there a way to make the script save the pictures directly to my computer instead of giving me the links?
 const Xray = require('x-ray');
const requesst = require('request');
const fs = require('fs');

const xray = Xray()

xray('https://www.marocannonces.com/categorie/350/Appareils-photos,-caméscopes/annonce/6503723/Nikon-D40x-objectif-18-135mm.html', 'div.infoannonce', [{
	numero: '#phone_number img@src',
	nom: '.infoannonce dd',
}])

.paginate('a.next_ad_link@href')
.write('results.json'); 

Open in new window

0

Node.js

151

Solutions

286

Contributors

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.

Top Experts In
Node.js
<
Monthly
>