I wonder what I am doing wrong.
I use Sailsv0.10 and mongo2.6.0 and want to update an array field (using $push) in a collection via native.
My model:
module.exports = {
schema: true,
attributes: {
username: {
type: 'string',
required: true
},
pubs: {
type: 'array',
defaultsTo: []
},
...
My function:
User.native(function (err, collection) {
collection.update({username:aUsernameVariable},{$push:{pubs:aPubsVariable}}, function (err) {
});
It works so far. But why does that not work as a query with the id field?
User.native(function (err, collection) {
collection.update({id:anIdVariable},{$push:{pubs:aPubsVariable}}, function (err) {
});
I definately use the right id for the query to test it.
What am I doing wrong? Or is that a ObjectId type conversion Problem of the Sails-Mongo Adapter
If you want to use native() you can always try the same query directly in your mongo-DB. Because _id is a Object-id you should
var ObjectId = require('mongodb').ObjectID;
User.native(function (err, collection) {
collection.update({_id: new ObjectId(anIdVariable)},{$push:{pubs:aPubsVariable}}, function (err) {
});
You can add the mongo-native-driver to you app with npm install mongodb --save
if you use sailsjs then:
ObjectID = require('sails-mongo/node_modules/mongodb').ObjectID;
var o_id = new ObjectID(req.param('id'));
console.log(o_id );
:)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With