Reputation: 565
My insert is not working, I got error of Error :
Token.insert is not a function
var Token = module.exports = mongoose.model('tokens', tokenSchema);
//error
module.exports.saveToken = function(owner_id, token, callback){
console.log(owner_id,token);
Token.insert({"owner":owner_id,"token":token},callback);
}
//working
module.exports.getAllTokens = function(owner_id, callback){
Token.find({"owner":owner_id},callback);
}
Upvotes: 7
Views: 12346
Reputation: 93
Here i defined what is the problem that why they did not find the insertMany
generally, we create an instance to save a document in DB like this :
const instance = new Model(data);
After then we hit the save query
instance.save(data).then().catch()
But when we talk about the insertMany Section, No need to create any instance. you can insert all entries directly via Model
eg.
Modal.insertMany(data).then().catch()
Upvotes: 1
Reputation: 19372
Check this code example, it should work as You need.
I don's see here any non-understanding part.
Ask questions in comments, I can explain if don't understand.
var tokenSchema = mongoose.Schema({
owner: {
type: 'String',
required: true,
index: {
unique: true
}
},
token: {
type: ['String'],
default: []
}
});
var Token = module.exports = mongoose.model('tokens', tokenSchema);
//save token, if token document exist so push it in token array and save
module.exports.saveToken = function(owner_id, token, callback){
Token
.findOne({owner: owner_id})
.exec(function(err, tokenDocument) {
if(tokenDocument) {
if(tokenDocument.token.indexOf(token) > -1) { // found that token already exist in document token array
return callback(null, tokenDocument); // don't do anything and return to callback existing tokenDocument
}
tokenDocument.token.push(token);
tokenDocument.save(callback);
return; // don't go down, cuz we already have a token document
}
new Token({owner: owner_id, token: [token]}).save(callback); // create new token document with single token in token array
});
}
//get all tokens by owner_id
module.exports.getAllTokens = function(owner_id, callback){
Token
.findOne({owner: owner_id})
.exec(function(err, tokenDocument) {
callback(err, tokenDocument.token);
});
}
Upvotes: 3
Reputation: 346
You can use:
let newvalue = new Token({"owner":owner_id,"token":token});
newvalue.save();
Upvotes: 1